// yes - it's german... have fun with "translation" :-) // KK 12.8.00 #declare RefOff = 0; #debug concat (str (clock*100,3,0), "% (clock: ", str(clock,0,3),")\n") #switch (clock) #range (0.00, 0.25) #declare cl =clock*4-0; #declare step=1; #break #range (0.25, 0.50) #declare cl =clock*4-1; #declare step=2; #break #range (0.50, 0.75) #declare cl =clock*4-2; #declare step=3; #break #range (0.75, 1.00) #declare cl =clock*4-3; #declare step=4; #break #end #declare Epes =.1; #declare HalberDoppelKegel = difference { #local KegelHoehe = 1; #local KegelRadius = tan(radians(45))*KegelHoehe; //90*InnenWinkel des Kegels. #local MantelHoehe = sqrt(pow(KegelHoehe,2)+pow(KegelRadius,2)); //MantelHoehe=DrehRadius #local DrehUmfang = MantelHoehe*2*pi; #local KegelUmfang =KegelRadius*pi; //nur ein Halbkreis wird gedreht. #declare DrehAnteil=KegelUmfang/DrehUmfang; #declare DrehWinkel=DrehAnteil*360; #declare MittelP1 = <0,0,0>; #declare RollA1 = <0,0,MantelHoehe>; #declare MittelP2 = vrotate (RollA1, <0,-DrehWinkel,0>); #declare RollA2 = MittelP1; #declare MittelP3 = vrotate (RollA2-MittelP2, <0,DrehWinkel,0>)+MittelP2; #declare RollA3 = MittelP2; #declare MittelP4 = vrotate (RollA3-MittelP3, <0,-DrehWinkel,0>)+MittelP3; #declare RollA4 = MittelP3; #declare Direction = MittelP4-RollA1; union { cone { <0,KegelHoehe,0>,0,0,KegelRadius} cone { <0,-KegelHoehe,0>,0,0,KegelRadius} } box {<0,-KegelHoehe-Epes,-KegelRadius-Epes>,} } #declare Sphericon = union { object {HalberDoppelKegel} object {HalberDoppelKegel rotate <90 ,180,0>} texture { pigment { bozo turbulence .5 lambda 3 omega .7 color_map { [0.0 color rgb <.4,.4,1>] [0.5 color rgb <.2,.2,.9>] [1.0 color rgb <.4,1,.4>] } scale .4 } finish { // reflection .1 phong 1 phong_size 50 metallic .4 } } #declare Trans1= transform { translate -MittelP1 rotate y*180 rotate x*45 rotate y*-DrehWinkel translate MittelP1 } #declare Trans2 = transform { translate -MittelP2 rotate y*-(180-DrehWinkel) rotate -x*45 rotate y*-180 rotate x*45 rotate y*(180-DrehWinkel) rotate y*DrehWinkel translate MittelP2 } #declare Trans3 = transform { translate -MittelP3 rotate -x*45 rotate y*180 rotate x*45 rotate y*-DrehWinkel translate MittelP3 } translate y*KegelHoehe #switch (step) #case (1) translate -MittelP1 rotate y*cl*180 rotate x*45 rotate y*-cl*DrehWinkel translate MittelP1 #break #case (2) transform Trans1 translate -MittelP2 rotate y*-(180-DrehWinkel) rotate -x*45 rotate y*cl*-180 rotate x*45 rotate y*(180-DrehWinkel) rotate y*DrehWinkel*cl translate MittelP2 #break #case(3) transform Trans1 transform Trans2 translate -MittelP3 rotate -x*45 rotate y*cl*180 rotate x*45 rotate y*-DrehWinkel*cl translate MittelP3 #break #case(4) transform Trans1 transform Trans2 transform Trans3 translate -MittelP4 rotate y*-(180-DrehWinkel) rotate -x*45 rotate y*-cl*180 rotate x*45 rotate y*(180-DrehWinkel) rotate y*DrehWinkel*cl translate MittelP4 #end translate -Direction*clock } #declare Rollband = union { #declare Breite = 3; #declare XVorne = 0; #declare WalzTex = texture { pigment { wood turbulence .1 lambda 3 omega .7 color_map { [0.0 color rgb <1,1,.8>] [0.2 color rgb <1,1,.5>] [1.0 color rgb <.66,.6,.3>] } scale .6 } finish {phong .4 phong_size 20} } #declare Laenge = vlength(Direction); #declare Radius = Laenge/2/pi; #declare WalzenRadius = Radius; #declare XHinten = XVorne + Laenge; #local a = .4; #local b = 1; cylinder {<-Breite/2-a,0,0>,,Radius*.9 texture {WalzTex rotate y*70} rotate x*clock*360 translate z*XVorne } cylinder {<-Breite/2-a,0,0>,,Radius*.9 texture {WalzTex translate z*50 rotate y*70} rotate x*clock*360 translate z*XHinten } union { cylinder {<-Breite/2-b,0,XVorne>,,Radius*.3} cylinder {<-Breite/2-b,0,XHinten>,,Radius*.3} texture { pigment {color rgb <.7,.2,.0>} finish { phong .4 phong_size 20 ambient 0 metallic .7 #if (RefOff=0) reflection .2 #end } } } #declare DasBand = union { #local BandFinish = finish { ambient 0 #if (RefOff=0) reflection .4 #end metallic phong .7 phong_size 2000 } #local BandPigment = pigment { gradient z frequency 2 color_map { [0.0 color rgb 1] [1.0 color rgb 0] } triangle_wave scale <1,1,Laenge> } box {<-Breite/2,Radius,XVorne>, texture { pigment { BandPigment translate z*Laenge*clock } finish {BandFinish} } } box {<-Breite/2,-Radius,XVorne>, texture { pigment { BandPigment translate z*Laenge translate z*Laenge*-clock } finish {BandFinish} } } #local rundband = cylinder {<-Breite/2,0,0>,,Radius texture { pigment { radial frequency 2 color_map { [0.0 color rgb 1] [1.0 color rgb 0] } triangle_wave rotate z*90 } finish { BandFinish } } rotate x*clock*360 translate z*XVorne } difference { union { object {rundband} object {rundband translate z*Laenge} } box {<-Breite/2-Epes,-Radius-Epes,XVorne>, pigment {color rgb 1}} } } #declare Staender = union { #local c = .1; #local d = .4; box {<-c,-2,-d>,} cylinder {<-c,0,0>,,d} texture { pigment { color rgb <.8,.8,.9> } finish { phong 1 phong_size 150 #if (RefOff=0) reflection .2 #end ambient .3 metallic .7 } } } object {Staender translate <-Breite/2-b/2,0,XVorne>} object {Staender translate <+Breite/2+b/2,0,XVorne>} object {Staender translate <-Breite/2-b/2,0,XHinten>} object {Staender translate <+Breite/2+b/2,0,XHinten>} object {DasBand} } sky_sphere { //von Sabrina pigment{ bozo turbulence .8 lambda 4.5 omega .5 colour_map { [ .0 colour rgb <.6,.7,.8>] [ .5 colour rgb <.6,.7,.8>] [0.8 colour rgb .9] [ 1 colour rgb .9] } scale .2 scale <1,.2,1> } pigment { planar colour_map { [0 colour rgbt <.6,.7,.8,1>] [.9 colour rgbt <.6,.7,.8,1>] [1 colour rgb <.6,.7,.8>] } } } plane {y,-2 texture { pigment { color rgb <1,1,.8> } finish { #if (RefOff=0) reflection .3 #end ambient .0 diffuse .4 } normal { dents .1 scale 5 } } } camera { location <-2,6,-2>*.8 right <1,0,0> up <0,1,0> look_at <0,WalzenRadius/2+.1,2> } light_source { <-5,5,-1> color rgb <.8,1,.5> spotlight point_at <0,WalzenRadius/2,2.5> radius 15 falloff 15.3 } light_source { <-50, 200, -30> color rgb <1,1,1>*.6 } object {Sphericon translate y*WalzenRadius translate -RollA1 #declare Wkl = degrees(acos(vdot (Direction, -z)/(vlength(-z)*vlength(Direction)))); rotate y*(-Wkl) translate z*+Laenge/2 translate RollA1 translate <-.2,0,-1> } object {Rollband}