File talk:Wankel Cycle anim en.gif

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search

POV-Ray source file[edit]

//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} }
}