// //N次元立方体の3次元への1つの射影を描く // #include "colors.inc" #include "metals.inc" #include "woods.inc" //次のNが次元です。 #declare N=11; camera { location <8, 4, 8> look_at <0,2.8,0> angle 40 } light_source { <15, 15, 5> White } light_source { <15, -15, 5> White } #declare Arg=3.1415*2/N; #declare Hig=1/sqrt(2); #declare Cube_ = object{ polygon{5, <0,0,0>, , , , <0,0,0> } } #declare CountI=1; #while (CountI < N-1) #declare CountJ=1; #declare BaseX=0; #declare BaseY=0; #while(CountJ < CountI+1) #declare BaseX=BaseX+cos(Arg*CountJ); #declare BaseY=BaseY+sin(Arg*CountJ); #declare CountJ=CountJ+1; #end #declare Front=; #declare Right=; #declare Left=; #declare Back=; #declare Cube_ = object{ union{ object{Cube_} object{ polygon{5,Front,Left,Back,Right,Front} } } } #declare CountI=CountI+1; #end #declare Ang=360/N; #declare Cube = object{ object{Cube_} } #declare CountI=1; #while (CountI < N) #declare Cube = object{ union{ object{Cube} object{Cube_ rotate <0,0,Ang*CountI> } } } #declare CountI=CountI+1; #end #declare Cube= object{ Cube scale sqrt(2)*5/N } object{ Cube texture{T_Silver_5B} // pigment{color White} rotate<-90,0,0> rotate<0,90,0> } object{ plane{y,-1} texture{T_Wood13 scale 3} }