This is a file from the Wikimedia Commons
From Wikipedia, the free encyclopedia

Villarceau_circles.gif(480 × 360 pixels, file size: 582 KB, MIME type: image/gif, looped, 39 frames, 17 s)

Summary

Description
English: Villarceau circles in a Torus. Rendered using POV-Ray.
Povray logo sphere.png 
This image was created with POV-Ray.
Source Own work
Author Lucas Vieira

Wikipedia

Cscr-featured.svg This is a featured picture on the English language Wikipedia ( Featured pictures) and is considered one of the finest images. See its nomination here.

If you think this file should be featured on Wikimedia Commons as well, feel free to nominate it.
If you have an image of similar quality that can be published under a suitable copyright license, be sure to upload it, tag it, and nominate it.

Licensing

Public domain I, the copyright holder of this work, release this work into the public domain. This applies worldwide.
In some countries this may not be legally possible; if so:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.

POV-Ray source code

/* 
Villarceau circles 2.0, by Lucas Vieira - October 2, 2006 - Coded in: POV-Ray 3.6
License: Public Domain


Info
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Author user page: http://en.wikipedia.org/wiki/User:LucasVB
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 */

Information

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

depicts

image/gif

File history

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

Date/TimeThumbnailDimensionsUserComment
current 22:43, 2 October 2006 Thumbnail for version as of 22:43, 2 October 2006480 × 360 (582 KB)LucasVBLarger version (480x360)
21:31, 2 October 2006 Thumbnail for version as of 21:31, 2 October 2006320 × 240 (336 KB)LucasVBImproved version. :)
06:18, 1 October 2006 Thumbnail for version as of 06:18, 1 October 2006480 × 360 (689 KB)LucasVBadded an extra frame highlighting the circles
05:52, 1 October 2006 Thumbnail for version as of 05:52, 1 October 2006480 × 360 (671 KB)LucasVB w:Villarceau circles in a w:Torus

Global file usage