Image:Villarceau circles.gif

From Wikipedia, the free encyclopedia

Wikimedia Commons logo This is a file from the Wikimedia Commons. The description on its description page there is shown below.
Commons is a freely licensed media file repository. You can help.
Featured picture This is a featured picture on English Wikipedia and is considered one of the finest images.
Wikimedia

[edit] Summary

Villarceau circles in a Torus. Rendered using POV-Ray.

[edit] POV-Ray source code

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

[edit] This is not Licensed

Public domain I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.

In case this is not legally possible:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.


Afrikaans | Alemannisch | Aragonés | العربية | Asturianu | Български | Català | Česky | Cymraeg | Dansk | Deutsch | Eʋegbe | Ελληνικά | English | Español | Esperanto | Euskara | Estremeñu | فارسی | Français | Galego | 한국어 | हिन्दी | Hrvatski | Ido | Bahasa Indonesia | Íslenska | Italiano | עברית | Kurdî / كوردی | Latina | Lietuvių | Latviešu | Magyar | Македонски | Bahasa Melayu | Nederlands | ‪Norsk (bokmål)‬ | ‪Norsk (nynorsk)‬ | 日本語 | Polski | Português | Ripoarisch | Română | Русский | Shqip | Slovenčina | Slovenščina | Српски / Srpski | Svenska | ไทย | Tagalog | Türkçe | Українська | Tiếng Việt | Walon | ‪中文(简体)‬ | ‪中文(繁體)‬ | zh-yue-hant | +/-

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeDimensionsUserComment
current22:43, 2 October 2006480×360 (582 KB)Kieff (Larger version (480x360))
21:31, 2 October 2006320×240 (336 KB)Kieff (Improved version. :))
06:18, 1 October 2006480×360 (689 KB)Kieff (added an extra frame highlighting the circles)
05:52, 1 October 2006480×360 (671 KB)Kieff (w:Villarceau circles in a w:Torus)