//WankelCycleAnimation.pov for POV-Ray3.6
//by Y tambe
//You can use this source file as public-domain
//Redering settings; width : height = 3 : 4, frames for animation; 1-36
camera {
angle 5
right <-1,0,0>
up <0,-1.33,0>
location <0.0, 0.0, 220>
look_at <0.0, 0.0, 0.0>
rotate -90*z
translate -0.5*y
}
light_source {
<0, 0, 1000>
rgb <1, 1, 1>
shadowless
}
//for internal gear
#declare gear16 =
difference{
cylinder{0.02*z, -0.05*z, 2}
union{
#declare tick = 16;
#declare counter = 0;
#while(tick > counter)
box{<0.25, pi/16, 1>, <-0.25, -pi/16, -1>
translate 2*x
rotate counter*(360/tick)*z
}
#declare counter = counter+1;
#end
}
texture{
pigment{color rgb <.3, .1, .1>}
finish{ambient 1}
}
}
//for external gear
#declare gear24 =
difference{
cylinder{0.25*z, -0.25*z, 3}
union{
#declare tick = 24;
#declare counter = 0;
#while(tick > counter)
box{<0.25, pi/16, 1>, <-0.25, -pi/16, -1>
translate 3*x
rotate counter*(360/tick)*z
}
#declare counter = counter+1;
#end
}
}
//define trochoid
#declare trochoid = array[361];
#declare a = 0;
#while (a<361)
#declare trochoid[a] = <4*cos(radians(a))*(cos(radians(a))*cos(radians(a))+1), 4*sin(radians(a))*sin(radians(a))*sin(radians(a))-10*sin(radians(a)),0>;
#declare a=a+1;
#end
//roter base structure
#declare roterbase=
intersection{
cylinder{z,-z,16 translate 11.2*x rotate 180*z}
cylinder{z,-z,16 translate 11.2*x rotate 60*z}
cylinder{z,-z,16 translate 11.2*x rotate -60*z}
cylinder{0.01*z, -0.02*z,8}
}
//roter
#declare roter=
difference{
union{
object{roterbase scale <0.98,0.98,1>
texture{
pigment{color rgb <0, 0.55, .55>}
finish{ambient 1}
}
}
object{roterbase scale <1,1,0.99>
texture{
pigment{color rgb 0}
finish{ambient 1}
}
}
cylinder{0.019*z, -0.05*z, 3.7
texture{
pigment{color rgb 0}
finish{ambient 0.8}
}
}
cylinder{0.02*z, -0.05*z, 3.65
texture{
pigment{color rgb <.4, .4, .4>}
finish{ambient 1}
}
}
}
object{gear24
texture{
pigment{color rgb <.5, 0.5, .0>}
finish{ambient 1}
}
translate 0*x
}
}
//trochoids
#declare border = 1.00;
#declare a=0;
#declare orbit=mesh{
#while (a < 360)
triangle{trochoid[a], trochoid[a+1]+border*vnormalize(trochoid[a+1]), trochoid[a]+border*vnormalize(trochoid[a])}
triangle{trochoid[a], trochoid[a+1],trochoid[a+1]+border*vnormalize(trochoid[a+1])}
#declare a =a +1;
#end
}
#declare border1 = 0.15;
#declare border2 = 0.85;
#declare a=0;
#declare orbitN=mesh{
#while (a < 360)
triangle{trochoid[a]+border1*vnormalize(trochoid[a]), trochoid[a+1]+border2*vnormalize(trochoid[a+1]), trochoid[a]+border2*vnormalize(trochoid[a])}
triangle{trochoid[a]+border1*vnormalize(trochoid[a]), trochoid[a+1]+border1*vnormalize(trochoid[a+1]),trochoid[a+1]+border2*vnormalize(trochoid[a+1])}
#declare a =a +1;
#end
}
#declare a=0;
#declare orbit2=mesh{
#while (a < 360)
triangle{0,trochoid[a], trochoid[a+1]}
#declare a =a +1;
#end
}
//plug
#declare plug=
union{
sphere{0,0.2
texture{
pigment {
color rgb 0
}
finish{ambient 1} }
}
box{-1,1
scale <0.25,0.5,1>
translate 0.5*y
texture{ pigment {color rgb <0,0,0>} finish{ambient 1} }
}
box{-1,1
scale <0.15,0.4,1.1>
translate 0.5*y
texture{ pigment {color rgb <0.5,0.5,0.5>} finish{ambient 1} }
}
box{-1,1
scale <0.4,0.1,1.1>
translate 1*y
texture{ pigment {color rgb <0,0,0>} finish{ambient 1} }
}
box{-1,1
scale <0.35,0.7,1>
translate 1.8*y
texture{ pigment {color rgb <0,0,0>} finish{ambient 1} }
}
box{-1,1
scale <0.25,0.65,1.1>
translate 1.8*y
texture{ pigment {color rgb <1,1,1>} finish{ambient 1} }
}
box{-1,1
scale <0.25,0.5,1>
translate 2.4*y
texture{ pigment {color rgb <0,0,0>} finish{ambient 1} }
}
translate 0.2*y
scale <1,1, 0.5>
}
//spark
#declare spark=
difference{
mesh{
#declare a=0;
#while (a<360)
triangle {
vaxis_rotate(x,z,a),
vaxis_rotate(-x,z,a),
vaxis_rotate(5*y,z,a)
}
#declare a=a+24;
#end
}
plane{-y,0}
texture{
pigment{
color rgbf <1,1,0,0.5>
}
finish{ambient 1}
}
scale 0.2
}
//write scene
#declare aa = clock*360;
//background
plane{ z,-0.3
texture{
pigment{color rgb 1 }
finish{ambient 1}
}
}
//internal gear
difference{
object{gear16}
cylinder{z, -z, 1.2
texture{
pigment{color rgb <.3, .1, .1>*.7}
finish{ambient 1}
}
}
}
//shaft
cylinder{ 0.02*z, -0.05*z, 1.1
texture{
pigment{
radial
color_map{
[0.0 color rgb <0.45,0.45,0.45>]
[1.0 color rgb <0.5,0.5,0.5>]
}
rotate 90*x
}
finish{ambient 1}
}
rotate 3*aa*z
}
//text for shaft
text{
ttf
"cyrvetic.ttf",
"B",0.5,0
rotate 180*y
rotate -90*z
translate <-.5, -.25, 0>
scale 1.2
translate vaxis_rotate(<-0.8, 0, 0.1>,z,aa*3)
texture{
pigment{color rgb <0.1,0.1,0.1>}
finish{ambient 1}
}
}
//roter
object{roter
translate -1.0*x
translate 1.0*x
rotate -aa*2*z
translate -1.0*x
rotate aa*3*z
}
//text for roter
#declare pos = <-6.5,0,0.1>;
#declare pos = pos + 1*x;
#declare pos = vaxis_rotate(pos,z,-aa*2);
#declare pos = pos- 1*x;
#declare pos = vaxis_rotate(pos,z,aa*3);
text{
ttf
"cyrvetic.ttf",
"A",0.5,0
rotate 180*y
rotate -90*z
translate <-.5, -.25, 0>
scale 1.2
translate pos
texture{
pigment{color rgb <0.1,0.1,0.1>}
finish{ambient 1}
}
}
//engine room
union{
difference{
union{
object{orbitN
translate 0.002*z
texture{
pigment{color rgb <.55, .55, .3>}
finish{ambient 1}
}
}
object{orbit
//rotate 90*z
texture{
pigment{color rgb 0}
finish{ambient 1}
}
}
}
box{ <trochoid[40].x, -10, -1>, < trochoid[50].x-0.15, 0, 1>}
box{ <trochoid[130].x, -10, -1>, <trochoid[120].x+0.15,0, 1>}
cylinder{z*1, -z*1,0.5 scale <1,0.5,1> translate trochoid[250]}
cylinder{z*1, -z*1,0.5 scale <1,0.5,1> translate trochoid[290]}
}
box{ trochoid[40], <trochoid[40].x+1, trochoid[50].y-3.0, 0.001>
translate -0.15*x
texture{
pigment{color rgb 0}
finish{ambient 1}
}
}
box{ trochoid[40], <trochoid[40].x+1-0.3, trochoid[50].y-2.8, 0.002>
translate -0.1*y
texture{
pigment{color rgb <.55,.55,.3>}
finish{ambient 1}
}
}
box{ <trochoid[50].x, trochoid[50].y, 0> , <trochoid[50].x-0.15,trochoid[50].y-3.0, 0.001>
texture{
pigment{color rgb 0}
finish{ambient 1}
}
}
box{ <trochoid[50].x, trochoid[50].y-0.5, 0> , <trochoid[50].x-1,trochoid[50].y-3.0, 0.001>
texture{
pigment{color rgb 0}
finish{ambient 1}
}
}
box{ <trochoid[50].x-0.15, trochoid[50].y-0.5, 0> , <trochoid[50].x-1+0.15,trochoid[50].y-3.0+0.15, 0.002>
texture{
pigment{color rgb <.55,.55,.3>}
finish{ambient 1}
}
}
box{ trochoid[130], trochoid[130]+<-1, -3.0, 0.001>
translate 0.15*x
texture{
pigment{color rgb 0}
finish{ambient 1}
}
}
box{ trochoid[130], trochoid[130]+<-1+0.3, -2.8, 0.002>
translate -0.1*y
texture{
pigment{color rgb <.55,.55,.3>}
finish{ambient 1}
}
}
box{ <trochoid[120].x, trochoid[120].y, 0> , <trochoid[120].x+0.15,trochoid[130].y-3.0, 0.001>
texture{
pigment{color rgb 0}
finish{ambient 1}
}
}
box{ <trochoid[120].x, trochoid[120].y-0.5, 0> , <trochoid[120].x+1,trochoid[130].y-3.0, 0.001>
texture{
pigment{color rgb 0}
finish{ambient 1}
}
}
box{ <trochoid[120].x+0.15, trochoid[120].y-0.5, 0> , <trochoid[120].x+1-0.15,trochoid[130].y-3.0+0.15, 0.002>
texture{
pigment{color rgb <.55,.55,.3>}
finish{ambient 1}
}
}
difference{
cylinder{z*0.001, -z*0.001,0.5 scale <1,0.5,1>}
cylinder{z*2, -z*2,0.25 scale <1,0.5,1>}
plane {y,0}
translate trochoid[250]
texture{
pigment{color rgb 0}
finish{ambient 1}
}
}
difference{
cylinder{z*0.001, -z*0.001,0.5 scale <1,0.5,1>}
cylinder{z*2, -z*2,0.25 scale <1,0.5,1>}
plane {y,0}
translate trochoid[290]
texture{
pigment{color rgb 0}
finish{ambient 1}
}
}
object{plug
translate trochoid[250]
}
object{plug
translate trochoid[290]
}
}
#switch(frame_number)
#case (1)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-6/8*<0.1,0.1,0.1>} ;
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>} ;
#declare intakeColor = color rgb <0.55,0.55,1>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb <0,0,1>;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (2)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>} ;
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-5/8*<0.1,0.1,0.1>} ;
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>} ;
#declare intakeColor = color rgb <0.55,0.55,1>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb <0,0,1>;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (3)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>-1/8*<0.15,0.15,0>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-4/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb <0,0,1>;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (4)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>-2/8*<0.15,0.15,0>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-3/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb <0,0,1>;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (5)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>-3/8*<0.15,0.15,0>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-2/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb <0,0,1>;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (6)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>-4/8*<0.15,0.15,0>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-1/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb <0,0,1>;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (7)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>-5/8*<0.15,0.15,0>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb <0,0,1>;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (8)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>-6/8*<0.15,0.15,0>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb <0,0,1>;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (9)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>-7/8*<0.15,0.15,0>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb <0,0,1>;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (10)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>-8/8*<0,0.15,0.15>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb <1,0,0>;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = true;
#break
#case (11)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>-8/8*<0,0.15,0.15>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb <1,0,0>;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = true;
#break
#case (12)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>-7/8*<0,0.15,0.15>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb <1,0,0>;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (13)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>-6/8*<0,0.15,0.15>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb <1,0,0>;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (14)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>-5/8*<0,0.15,0.15>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb <1,0,0>;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (15)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>-4/8*<0,0.15,0.15>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-1/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb <1,0,0>;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (16)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>-3/8*<0,0.15,0.15>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-2/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb <1,0,0>;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (17)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>-2/8*<0,0.15,0.15>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-3/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb <1,0,0>;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (18)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>-1/8*<0,0.15,0.15>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-4/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb <1,0,0>;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (19)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-5/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <1,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb <1,0,0>;
#declare sparkON = false;
#break
#case (20)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-6/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <1,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb <1,0,0>;
#declare sparkON = false;
#break
#case (21)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-7/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <1,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb <1,0,0>;
#declare sparkON = false;
#break
#case (22)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-8/8*<0.1,0.1,0.1>};//burst
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <1,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb <1,0,0>;
#declare sparkON = true;
#break
#case (23)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-8/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <1,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb <1,0,0>;
#declare sparkON = true;
#break
#case (24)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-7/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <1,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb <1,0,0>;
#declare sparkON = false;
#break
#case (25)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-6/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <1,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb <1,0,0>;
#declare sparkON = false;
#break
#case (26)
#declare plane1Pigment = pigment{color rgb <1,0.55,0.55>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-5/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <1,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb <1,0,0>;
#declare sparkON = false;
#break
#case (27)
#declare plane1Pigment = pigment{color rgb <0.60-0.05*1/5,0.55,0.55+0.05*1/5>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-1/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-4/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <1,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb <1,0,0>;
#declare sparkON = false;
#break
#case (28)
#declare plane1Pigment = pigment{color rgb <0.60-0.05*2/5,0.55,0.55+0.05*2/5>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-2/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-3/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,0.55>;
#declare exhaustColor = color rgb <1,0.55,0.55>;
#declare intakeTxtColor = color rgb 0.5;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb <1,0,0>;
#declare sparkON = false;
#break
#case (29)
#declare plane1Pigment = pigment{color rgb <0.60-0.05*3/5,0.55,0.55+0.05*3/5>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-3/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-2/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,1>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb <0,0,1>;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (30)
#declare plane1Pigment = pigment{color rgb <0.60-0.05*4/5,0.55,0.55+0.05*4/5>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-4/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>-1/8*<0.1,0.1,0.1>};
#declare intakeColor = color rgb <0.55,0.55,1>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb <0,0,1>;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (31)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-5/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,1>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb <0,0,1>;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (32)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-6/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,1>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb <0,0,1>;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (33)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-7/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,1>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb <0,0,1>;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#case (34)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-8/8*<0.1,0.1,0.1>};//burst
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,1>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb <0,0,1>;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = true;
#break
#case (35)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-8/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,1>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb <0,0,1>;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = true;
#break
#case (36)
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-7/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,1>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb <0,0,1>;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#break
#else
#declare plane1Pigment = pigment{color rgb <0.55,0.55,1>};
#declare plane2Pigment = pigment{color rgb <0.55,0.55,0.55>-6/8*<0.1,0.1,0.1>};
#declare plane3Pigment = pigment{color rgb <0.55,0.55,0.55>};
#declare intakeColor = color rgb <0.55,0.55,1>;
#declare exhaustColor = color rgb <0.55,0.55,0.55>;
#declare intakeTxtColor = color rgb <0.2,0.2,1>;
#declare compressTxtColor = color rgb 0.5;
#declare ignitionTxtColor = color rgb 0.5;
#declare exhaustTxtColor = color rgb 0.5;
#declare sparkON = false;
#end
//matters with case
//plane1
difference{
object{orbit2
}
plane{x,0
translate 2.5*x
translate 1.0*x
rotate -aa*2*z
translate -1.0*x
rotate aa*3*z
}
texture{
pigment{ plane1Pigment }
finish{ambient 1}
}
translate 0.005*z
}
//plane2
difference{
object{orbit2
}
plane{x,0
translate 2.5*x
translate 1.0*x
rotate -(aa+120)*2*z
translate -1.0*x
rotate (aa+120)*3*z
}
texture{
pigment{ plane2Pigment }
finish{ambient 1}
}
translate 0.005*z
}
//plane3
difference{
object{orbit2
}
plane{x,0
translate 2.5*x
translate 1.0*x
rotate -(aa+240)*2*z
translate -1.0*x
rotate (aa+240)*3*z
}
texture{
pigment{ plane3Pigment }
finish{ambient 1}
}
translate 0.0005*z
}
box{ trochoid[40], <trochoid[50].x, trochoid[50].y-0.5, 0.0004>
texture{
pigment{
color intakeColor
}
finish{ambient 1}
}
}
box{ <trochoid[40].x-0.2, trochoid[40].y ,0>, <trochoid[50].x+0.15, trochoid[40].y-10, 0.0003>
texture{
pigment{
planar
color_map{
[0.0 color rgb <0.8,0.8,1>]
[0.5 color rgb intakeColor]
}
frequency 40
scale 40
}
finish{ambient 1}
}
translate mod(frame_number,3)*1/3*y
}
box{ trochoid[130], <trochoid[120].x, trochoid[120].y-0.5, 0.0004>
texture{
pigment{
color rgb exhaustColor
}
finish{ambient 1}
}
}
box{ <trochoid[120].x-0.05, trochoid[120].y ,0>, <trochoid[130].x+0.2, trochoid[130].y-10, 0.0003>
texture{
pigment{
planar
color_map{
[0.5 color exhaustColor]
[1.0 color rgb <1,0.8,0.8>]
}
frequency 40
scale 40
}
finish{ambient 1}
}
translate -mod(frame_number,3)*1/3*y
}
#if(sparkON)
object{spark translate trochoid[250]+<0,0.2,0.1>}
object{spark translate trochoid[290]+<0,0.2,0.1>}
#end
//for English annotation
#declare intakeText0 = text{
ttf "cyrvetic.ttf",
"INTAKE", //en
0.5,0
rotate -90*z
rotate 180*x
scale <1.3,1.3,1>
translate 0.11*z
translate <7.5,-9.5,0>
}
#declare intakeText=union{
object{intakeText0 translate <1,0,0>*0.05}
object{intakeText0 translate <0,1,0>*0.05}
object{intakeText0 translate <1,1,0>*0.05}
}
#declare compressText0 =text{
ttf "cyrvetic.ttf",
"COMPRESSION", //en
0.5,0
rotate -90*z
rotate 180*x
scale <1.3,1.1,1>
translate 0.11*z
translate <9.2,1,0>
}
#declare compressText=union{
object{compressText0 translate <1,0,0>*0.05}
object{compressText0 translate <0,1,0>*0.05}
object{compressText0 translate <1,1,0>*0.05}
}
#declare ignitionText0 =text{
ttf "cyrvetic.ttf",
"IGNITION", //en
0.5,0
rotate -90*z
rotate 180*x
scale <1.3,1.2,1>
translate 0.11*z
translate <-8.9,4,0>
}
#declare ignitionText=union{
object{ignitionText0 translate <1,0,0>*0.05}
object{ignitionText0 translate <0,1,0>*0.05}
object{ignitionText0 translate <1,1,0>*0.05}
}
#declare exhaustText0 =text{
ttf "cyrvetic.ttf",
"EXHAUST", //en
0.5,0
rotate -90*z
rotate 180*x
scale <1.3,1.1,1>
translate 0.11*z
translate <-8.2,-9.7,0>
}
#declare exhaustText=union{
object{exhaustText0 translate <1,0,0>*0.05}
object{exhaustText0 translate <0,1,0>*0.05}
object{exhaustText0 translate <1,1,0>*0.05}
}
/*
//for japanese annotation; not avaible without image files
#declare intakeText = height_field{
png "intake_ja.png"
water_level 0.1
rotate 90*x
rotate 90*z
scale <4,4,0.1>
translate <6,-10,0>
}
#declare compressText = height_field{
png "compress_ja.png"
water_level 0.1
rotate 90*x
rotate 90*z
scale <4,4,0.1>
translate <7,5,0>
}
#declare ignitionText = height_field{
png "ignition_ja.png"
water_level 0.1
rotate 90*x
rotate 90*z
scale <4,4,0.1>
translate <-9,5,0>
}
#declare exhaustText = height_field{
png "exhaust_ja.png"
water_level 0.1
rotate 90*x
rotate 90*z
scale <4,4,0.1>
translate <-7.2,-10,0>
}
*/
/*
//for german annotation not avaible without image files
#declare intakeText = height_field{
png "intake_de.png"
water_level 0.1
rotate 90*x
rotate 90*z
scale <7,7,0.1>
translate <7.5,-10.5,0>
}
#declare compressText = height_field{
png "compress_de.png"
water_level 0.1
rotate 90*x
rotate 90*z
scale <8,9.6,0.1>
translate <9,-0.3,0>
}
#declare ignitionText = height_field{
png "ignition_de.png"
water_level 0.1
rotate 90*x
rotate 90*z
scale <7,7,0.1>
translate <-10,2.2,0>
}
#declare exhaustText = height_field{
png "exhaust_de.png"
water_level 0.1
rotate 90*x
rotate 90*z
scale <7,7,0.1>
translate <-9.2,-10.2,0>
}
//for english annotation_2 not avaible without image files
#declare intakeText = height_field{
png "intake_en.png"
water_level 0.1
rotate 90*x
rotate 90*z
scale <7,7,0.1>
translate <7,-11,0>
}
#declare compressText = height_field{
png "compress_en.png"
water_level 0.1
rotate 90*x
rotate 90*z
scale <8,9.6,0.1>
translate <9,-0.3,0>
}
#declare ignitionText = height_field{
png "ignition_en.png"
water_level 0.1
rotate 90*x
rotate 90*z
scale <7,7,0.1>
translate <-10,2.2,0>
}
#declare exhaustText = height_field{
png "exhaust_en.png"
water_level 0.1
rotate 90*x
rotate 90*z
scale <7,7,0.1>
translate <-9.2,-10.2,0>
}
*/
object{intakeText
texture{pigment{color intakeTxtColor} finish{ambient 1} }
}
object{compressText
texture{pigment{color rgb compressTxtColor} finish{ambient 1} }
}
object{ignitionText
texture{pigment{color rgb ignitionTxtColor} finish{ambient 1} }
}
object{exhaustText
texture{pigment{color rgb exhaustTxtColor} finish{ambient 1} }
}