File:Mug and Torus morph.gif

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Mug_and_Torus_morph.gif(240 × 240 pixels, file size: 497 KB, MIME type: image/gif, looped, 58 frames, 12s)


Wikipedia

Cscr-featured.svgSound-icon-empty.svgThis is a featured picture on the English language Wikipedia (Featured pictures) and is considered one of the finest images.
Cscr-featured.svgSound-icon-empty.svgThis is a featured picture on the Turkish language Wikipedia (Seçkin resimler) and is considered one of the finest images.

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.


العربية | azərbaycanca | ‪беларуская (тарашкевіца)‬ | català | česky | Cymraeg | dansk | Deutsch | Zazaki | English | Esperanto | español | eesti | فارسی | suomi | français | galego | עברית | हिन्दी | hrvatski | magyar | Հայերեն | Bahasa Indonesia | italiano | 日本語 | ქართული | 한국어 | lietuvių | македонски | മലയാളം | Bahasa Melayu | Malti | Plattdüütsch | Nederlands | ‪norsk (nynorsk)‬ | ‪norsk (bokmål)‬ | polski | português | português do Brasil | română | русский | slovenščina | српски / srpski | svenska | தமிழ் | Türkçe | татарча/tatarça | українська | Tiếng Việt | Yorùbá | ‪中文(简体)‬ | ‪中文(繁體)‬ | +/−

Contents

[edit] Summary

A coffee mug morphing into a torus, a popular example in topology.

Rendered using POV-Ray.

Türkçe: Bir kahve bardağının simide sürekli deformasyonunu gösteren bir homeomorfizma animasyonu.

[edit] POV-Ray source code

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

[edit] Updated January 12, 2007

  1. New colors: blue hue, brighter, softer shadows
  2. Changed light angle
  3. Non-linear interpolation: looks smoother and less boring
  4. Faster frame rate
  5. Cropped to relevant area
  6. Overall, smaller size for a better-looking image.

[edit] Updated January 20, 2007

  1. Removed dithering. Image now has visible color bands, but at least thumbnails won't look excessively grainy.

[edit] Updated March 1, 2007

  1. More saturation of colors

[edit] 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.

[edit] See also

File history

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

Date/TimeThumbnailDimensionsUserComment
current00:56, 2 March 2007Thumbnail for version as of 00:56, 2 March 2007240 × 240 (497 KB)Kieffback to old cropping - looks a lot better
00:49, 2 March 2007Thumbnail for version as of 00:49, 2 March 2007189 × 240 (477 KB)Kieffmore saturation of colors
08:30, 20 January 2007Thumbnail for version as of 08:30, 20 January 2007240 × 240 (465 KB)KieffRemoved dithering since it was causing excessive grainy-ness in thumbnails. Image now has color bands, but at least thumbnails won't look bad.
05:49, 12 January 2007Thumbnail for version as of 05:49, 12 January 2007240 × 240 (497 KB)KieffBetter version -- bright color+softer shadows+color=blue instead of an ugly yellowish-brown --- non-linear interpolation (looks a lot smoother) --- cropped to relevant area -- all in all, looks better and the file is a hundred kilobytes smaller :)
06:02, 2 October 2006Thumbnail for version as of 06:02, 2 October 2006320 × 240 (554 KB)KieffA coffee w:mug morphing into a w:torus.

Global file usage

The following other wikis use this file:

View more global usage of this file.

Personal tools
Namespaces

Variants
Actions
Navigation
Interaction
Toolbox