Fine Art

.


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

Geometry

Undergraduate Texts in Mathematics

Graduate Texts in Mathematics

Graduate Studies in Mathematics

Mathematics Encyclopedia

Retrieved from "http://en.wikipedia.org/"
All text is available under the terms of the GNU Free Documentation License

Hellenica World - Scientific Library