.
Villarceau circles
Conceptual animation showing how a slant cut torus reveals a pair of circles, known as Villarceau circles
/* Villarceau circles 2.0, by Lucas V. Barbosa - October 2, 2006 - Coded in: POV-Ray 3.6 License: Public Domain Info ���������������������������������� Author user page: http://en.wikipedia.org/wiki/User:Kieff The final animation at Wikimedia Commons: http://commons.wikimedia.org/wiki/Image:Villarceau_circles.gif Notes ���������������������������������� Several modifications were done for each part of the animation and I didn't keep them all here. So if you wish to reproduce the animation, you'll have to play with this code quite a bit. :) */ background { color rgb 1 } global_settings { assumed_gamma 1.5 } camera { orthographic location <0,4,-5>*0.75 look_at <0,0,0> rotate 5*y // slight camera angle so the cutting plane doesn't look too boring //rotate 90*y // debug rotation } light_source { <0,0,0>, 1 translate <-5,5,0>*1 shadowless // makes everything softer, because shading comes entirely from the surface normal // this removes specular reflections, but I thought it looked a lot better } //Several rotation codes used for various parts of the animation. //#declare rotation = (-95*sin(clock*pi/2))*y; // 360*clock*y; #declare rotation = -90*y; //#declare rotation = (-85 * sin(clock*pi/2))*y; //Bottom half-torus #if (1) difference { difference { torus { 1, 0.5 } torus { 1, 0.499 pigment { image_map { //surface inside the torus png "checker2.png" // 1024x512 checkered image, with 64x64 cells. interpolate 4 map_type 5 //transmit all 1-sin(clock*pi/2) //transmit all 0.85 } } } } box { -3*<1,0,1>, <1,1,1>*3 rotate degrees(asin(0.5-0.001))*z } pigment { image_map { png "checker.png" // 1024x512 checkered image, with 64x64 cells. interpolate 4 map_type 5 //transmit all 1-sin(clock*pi/2) //transmit all 0.85 } } finish { specular 0.5 roughness 0.01 ambient 0.5 } rotate rotation } #end //Top half-torus (the one discarded during the animation) //Notice it doesn't have an inner surface like the other half #if (0) intersection { difference { torus { 1, 0.5 } torus { 1, 0.499 } } box { -3*<1,0,1>, <1,1,1>*3 rotate degrees(asin(0.5-0.001))*z } pigment { image_map { png "checker.png" // 1024x512 checkered image, with 64x64 cells. interpolate 4 map_type 5 //transmit all 1-sin(clock*pi/2) // Fades it away while moving to the left (see below) //transmit all 0.85 } } finish { specular 0.5 roughness 0.01 ambient 0.5 } //translate -x*0.5*sin(clock*pi/2) // Moves this part to the left. Should be enabled along with the fade code above rotate rotation } #end //Cutting plane #if (0) box { <1.8,0.001,1.8>, -<1.8,0.001,1.8> pigment { color rgb <1,0.8,0.5> //transmit 1-sin(clock*pi/2)*0.4 //transmit 0.6+0.4*sin(clock*pi/2) transmit 0.6 } finish { specular 0.5 roughness 0.01 ambient 0.3 } //translate 3.5*x - sin(clock*pi/2)*3.5*x rotate degrees(asin(0.5-0.001))*z } #end //The Villarceau circles #if (0) union { torus { 1, 0.01 translate 0.5*z } torus { 1, 0.01 translate -0.5*z } pigment { color rgb <1,0,0> //transmit clock } finish { ambient 1 } no_shadow rotate degrees(asin(0.5-0.001))*z rotate -85*y } #end /* END OF FILE */
Undergraduate Texts in Mathematics
Graduate Studies in Mathematics
Retrieved from "http://en.wikipedia.org/"
All text is available under the terms of the GNU Free Documentation License