# File:Triple torus illustration.png

Original file(2,204 × 1,550 pixels, file size: 670 KB, MIME type: image/png)

 Description Illustration of a triple torus Date 7 September 2007, 18:01 (UTC) Source Own work, MATLAB source code below  This diagram was created with MATLAB. 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.
 This math image could be re-created using vector graphics as an SVG file. This has several advantages; see Commons:Media for cleanup for more information. If an SVG form of this image is available, please upload it and afterwards replace this template with `{{vector version available|new image name}}`. It is recommended to name the SVG file "Triple torus illustration.svg" – then the template Vector version available (or Vva) does not need the new image name parameter.

## Source code (MATLAB)

```function main()

% illustration of a triple torus

% torus radii
r = 1;
R = 3;

Kb = R+r;
Ks = R-r;

% Km controls the smoothness of the transition from one ring to the others
Km = 0.5125*Kb;

L = 2.5*(r+R);

h = 0.2; % grid size

X = (-L):h:L; m = length(X);
Y = (-L):h:L; n = length(Y);
Z = (-1.1*r):h:(1.1*r); k = length(Z);

W = zeros(m, n, k);

for i=1:length(X)
for j=1:length(Y)
x = X(i);
y = Y(j);

[x, y] = triple_torus_function (x, y, r, R, Kb, Km);
val = (sqrt(x^2+y^2)-R)^2-r^2;
W(i, j, :) = val + Z.^2;

end
end

figure(1); clf; hold on;
axis equal; axis off;

light_green=[184, 224, 98]/256; % light green

H = patch(isosurface(X, Y, Z, W, 0));
isonormals(X, Y, Z, W, H);
mycolor = light_green;

set(H, 'FaceColor', mycolor, '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))
view(-12, 40);

% add in a source of light
camlight (-50, 54); lighting phong;

print('-dpng', '-r400',  ...
sprintf('Triple_torus_illustration.png'));

function [x, y] = triple_torus_function (x, y, r, R, Kb, Km)

% a deformation in the plane, which, when comosed with a torus will give
% a triple torus

% center of one of the torii
O = [-Kb, -Kb/sqrt(3)];

angle = 2*pi/3;
Mat = [ cos(angle)  -sin(angle); sin(angle)   cos(angle)  ];

p =[x, y]';
phi = atan2(y, x);

if phi >= pi/6 & phi <= 5*pi/6
p = Mat*p; % rotate 120 degree counterclockwise
elseif phi >= -pi/2 & phi < pi/6
p = Mat*p; p = Mat*p; % rotate 240 degrees counterclockwise
end

x=p(1); y = p(2);

% reflect against a line, to merge two cases in one
if y > x/sqrt(3)

p = [x, y];
v = [cos(2*pi/3), sin(2*pi/3)];

p = p - 2*v*dot(p, v)/dot(v, v);
x = p(1); y = p(2);

end

if x > O(1)

% project to the y axis, to a point B
if y < O(2)

A = [O(1), y];
B = [0, y];
else

A = O;

p = [x, y];
rho = norm(p-O);

B = O+(Kb/rho)*(p-O);

%         t = -O(1)/(x-O(1));
%         B = [0, O(2)+t*(y-O(2))];

end

p = [x, y];

d=norm(p-A);
q = norm(B-A);

d = my_map(d, q, Km);
p = (d/q)*B+(1-d/q)*A;
x=p(1); y=p(2);

end

% shift towards the origin
x = x-O(1);
y = y-O(2);

function y = my_map(x, Kb, Km)

if x > Kb
y = Km + 1;
elseif x < Km
y = x;
else
y = Km+sin((pi/2)*(x-Km)/(Kb-Km));
end
```
 This math image could be re-created using vector graphics as an SVG file. This has several advantages; see Commons:Media for cleanup for more information. If an SVG form of this image is available, please upload it and afterwards replace this template with `{{vector version available|new image name}}`. It is recommended to name the SVG file "Triple torus illustration.svg" – then the template Vector version available (or Vva) does not need the new image name parameter.

### 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
current03:01, 1 July 20082,204 × 1,550 (670 KB)Oleg Alexandrovchange viewing angle
02:48, 1 July 20081,958 × 1,335 (530 KB)Oleg AlexandrovImplementation using isosurface. Much better quality and much simpler than using patches. Will upload source code too. Same license, public domain.
04:42, 23 June 20081,320 × 1,000 (366 KB)Oleg AlexandrovFix a small imperfection in Gimp
02:54, 10 September 20071,320 × 1,000 (366 KB)Oleg AlexandrovTweak
18:01, 7 September 2007372 × 263 (49 KB)Oleg Alexandrov{{Information |Description= Illustration of en:Triple torus |Source=self-made with MATLAB, source code below |Date=~~~~~ |Author= Oleg Alexandrov }} {{PD-self}} ==MATLAB source code== <pre> <nowiki> % illustration of a tripl
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 en.wiktionary.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 pl.wikipedia.org
• Usage on pl.wiktionary.org
• Usage on ru.wikipedia.org

View more global usage of this file.