Keywords: Double torus illustration.png Created with MATLAB Illustration of en Double torus Own 05 50 6 September 2007 UTC Oleg Alexandrov Source code <source lang matlab > illustration of a double torus obtained as an isosurface function main big and small radii of the torus R 3; r 1; c controls the transition from one ring to the other c 1 3 pi/2; Kb R+r; h 0 1; h is the grid size Smaller h means prettier picture X -Kb-h h 3 Kb+h ; m length X ; Y -Kb-h h Kb+h ; n length Y ; Z -r-h h r+h ; k length Z ; W zeros m n k ; the zero level set of this function will be the desired shape for i 1 m for j 1 n x X i ; x my_map x Kb c ; map from two torii to one torus y Y j ; W i j sqrt x 2+y 2 -R 2 + Z 2-r 2; torus eqn vectorize in Z end end figure 4 ; clf; hold on; axis equal; axis off; H patch isosurface W 0 ; isonormals W H ; light_green 184 224 98/256; set some propeties set H 'FaceColor' light_green 'EdgeColor' 'none' 'FaceAlpha' 1 ; set H 'SpecularColorReflectance' 0 1 'DiffuseStrength' 0 8 ; set H 'FaceLighting' 'phong' 'AmbientStrength' 0 3 ; set H 'SpecularExponent' 108 ; daspect 1 1 1 ; axis tight; colormap prism 28 viewing angle view -165 42 ; add in a source of light camlight -50 54 ; lighting phong; save as png print '-dpng' '-r500' sprintf 'Double_torus_illustration png' ; This function constructs the second ring in the double torus by mapping from the first one function y my_map x K c if x > K x 2 K - x; end if x < K-c y x; else y K-c + sin x - K-c pi/2/c ; end </source> Higher genus Files by User Oleg Alexandrov from en wikipedia Isosurfaces Images with Matlab source code math |