# File:Double torus illustration.png

Original file(985 × 1,077 pixels, file size: 260 KB, MIME type: image/png)

This diagram was created with MATLAB.

 Description Illustration of en:Double torus Date 6 September 2007, 05:50 (UTC) Source Own work Author Oleg Alexandrov
 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.

File:Bitorus.svg is a vector version of this file. It should be used in place of this raster image when not inferior.

File:Double torus illustration.png File:Bitorus.svg

## Source code

```% 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
```

### Captions

Add a one-line explanation of what this file represents

## File history

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

Date/TimeThumbnailDimensionsUserComment
current04:32, 12 July 2008985 × 1,077 (260 KB)Oleg AlexandrovHigher quality version, using isosurface instead of patches. Same license and all that.
05:49, 6 September 20071,176 × 1,240 (350 KB)Oleg Alexandrov{{Information |Description= |Source=self-made |Date=Illustration of en:Double torus |Author= Oleg Alexandrov }} {{PD-self}} Category:Differential geometry Category:Files by User:Oleg Alexandrov from en.wikipedia
The following pages on the English Wikipedia use this file (pages on other projects are not listed):

## Global file usage

The following other wikis use this file:

• Usage on ar.wikipedia.org
• Usage on ca.wikipedia.org
• Usage on de.wikipedia.org
• Usage on de.wikiversity.org
• Usage on el.wikipedia.org
• Usage on eo.wikipedia.org
• Usage on es.wikipedia.org
• Usage on fa.wikipedia.org
• Usage on fi.wikipedia.org
• Usage on fr.wikipedia.org
• Usage on he.wikipedia.org
• Usage on hy.wikipedia.org
• Usage on it.wikipedia.org
• Usage on ja.wikipedia.org
• Usage on ko.wikipedia.org
• Usage on la.wikipedia.org
• Usage on nl.wikipedia.org
• Usage on nn.wikipedia.org
• Usage on no.wikipedia.org
• Usage on pl.wikipedia.org
• Usage on pt.wikipedia.org
• Usage on ru.wikipedia.org
• Usage on sl.wikipedia.org

View more global usage of this file.