Image:Villarceau circles.gif

From Wikipedia, the free encyclopedia

Villarceau_circles.gif (583KB, MIME type: image/gif)

Wikimedia Commons logo This is a file from the Wikimedia Commons. The description on its description page there is shown below.
Featured picture star This is a featured picture, which means that members of the community have identified it as one of the finest images on the English Wikipedia, adding significantly to its accompanying article. If you have a different image of similar quality, be sure to upload it using the proper free license tag, add it to a relevant article, and nominate it.
Wikipedia logo This image was selected as picture of the day for January 8, 2007.

[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 kept 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] Licensing

Public domain I, the author 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 | العربية | Български | Català | Česky | Cymraeg | Dansk | Deutsch | Ελληνικά | English | Español | Esperanto | فارسی | Français | Galego | 한국어 | हिन्दी | Hrvatski | Ido | Bahasa Indonesia | Íslenska | Italiano | עברית | Latina | Lietuvių | Magyar | Bahasa Melayu | Nederlands | Norsk (bokmål) | Norsk (nynorsk) | 日本語 | Polski | Português | Ripoarish | Română | Русский | Slovenčina | Slovenščina | Српски | Svenska | ไทย | Türkçe | Українська | Tiếng Việt | Walon | 简体中文 | 繁體中文 | 粵語 | +/-

The following pages on the English Wikipedia link to this file (pages on other projects are not listed):