Keywords: Mug and Torus morph.gif Assessments 1 1 A coffee mug morphing into a torus a popular example in topology Rendered using POV-Ray Bir kahve bardağının simide sürekli deformasyonunu gösteren bir homeomorfizma animasyonu POV-Ray source code <div style border 1px solid CCC;height 300px;overflow auto; ><pre><nowiki> / Torus to mug morphing animation by Lucas V Barbosa - January 17 2007 - Coded in POV-Ray 3 6 License Info ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Author user page http //en wikipedia org/wiki/User Kieff The final animation at Wikimedia Commons http //commons wikimedia org/wiki/Image Mug_and_Torus_morph 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 8 look_at <0 0 0> //rotate -45 y declare dist 0 2; light_source <0 0 0> 1 //translate <-3 5 -5> 1 translate 5 y translate -5 z translate 2 x declare a 1; // Cylinders for the mug shape declare C_a function pow x / a 2 + pow z / a 2 -1 5 declare C_b function pow x / a 2 + pow z / a 2 -1 2 declare B_b function y+1 3 // Torus handle and the morphing target declare R 1; declare r 0 22; declare T_a function pow R - sqrt pow x 2 + pow y 2 2 + pow z 2 - pow r 2 declare R2 1; declare r2 0 5; declare T_b function pow R2 - sqrt pow x 2 + pow y 2 2 + pow z 2 - pow r2 2 // Hollow mug concave declare Mug function min min max C_a x y z B_b x y z max C_a x y z -C_b x y z max T_a x-1 y z -C_a x y z // Solid mug cylinder with handle convex declare Mug2 function min C_a x y z max T_a x-1 y z -C_a x y z declare c 0 5; // Linear to smooth interpolation declare Int pow sin clock pi/2 2 ; // Functions for the mug parts left as backups // max C_a x y z B_b x y z bottom // max C_a x y z -C_b x y z sides // min max C_a x y z B_b x y z max C_a x y z -C_b x y z bottom+sides // max T_a x-1 y z -C_a x y z handle // min min max C_a x y z B_b x y z max C_a x y z -C_b x y z max T_a x-1 y z -C_a x y z full mug // Render as isosurface or CSG // Isosurface is used in the transitional states declare RenderIsosurface 0; if RenderIsosurface union isosurface function // Add previously defined object functions using Int and 1-Int as to generate the smooth transition //Mug2 x y z 1-Int + Mug x y z //T_b x-1 y z Int contained_by box -<3 1 5 3> <3 1 5 3> accuracy 0 001 max_gradient 5 // 10 //rotate -90 x cylinder <0 -1 3+Int 2 8 0> <0 -1 5 0> sqrt 1 5 pigment color rgb <0 6 0 8 1> transmit 0 1 finish specular 0 5 roughness 0 01 ambient 0 2 else union difference cylinder -1 5 y 1 5 y sqrt 1 5 cylinder -2 y 2 y sqrt 1 2 difference torus R r rotate 90 x translate x cylinder -1 5 y 1 5 y sqrt 1 5 cylinder <0 0-0 25+Int 1 5+0 25 0> <0 -1 5 0> sqrt 1 5 pigment color rgb <0 6 0 8 1> transmit 0 1 finish specular 0 5 roughness 0 01 ambient 0 2 end / END OF FILE / </nowiki></pre></div> Updated January 12 2007 New colors blue hue brighter softer shadows Changed light angle Non-linear interpolation looks smoother and less boring Faster frame rate Cropped to relevant area Overall smaller size for a better-looking image Updated January 20 2007 Removed dithering Image now has visible color bands but at least thumbnails won't look excessively grainy Updated March 1 2007 More saturation of colors See also Image Mug and Torus morph frame png - single frame suitable for thumbnail purposes Basics of topology Torus Animations of geometry Animated GIF Created with Persistence of Vision Isosurfaces |