Datei:Triple torus illustration.png

Aus testwiki
Zur Navigation springen Zur Suche springen
Originaldatei (2.204 × 1.550 Pixel, Dateigröße: 670 KB, MIME-Typ: image/png)

Diese Datei stammt aus Wikimedia Commons und kann von anderen Projekten verwendet werden. Die Beschreibung von deren Dateibeschreibungsseite wird unten angezeigt.

Beschreibung Illustration of a triple torus
Datum (UTC)
Quelle Eigenes Werk, MATLAB source code below
 Dieses Diagramm wurde mit MATLAB erstellt.
Urheber Oleg Alexandrov
Public domain Ich, der Urheberrechtsinhaber dieses Werkes, veröffentliche es als gemeinfrei. Dies gilt weltweit.
In manchen Staaten könnte dies rechtlich nicht möglich sein. Sofern dies der Fall ist:
Ich gewähre jedem das bedingungslose Recht, dieses Werk für jedweden Zweck zu nutzen, es sei denn, Bedingungen sind gesetzlich erforderlich.

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

Kurzbeschreibungen

Ergänze eine einzeilige Erklärung, was diese Datei darstellt.

In dieser Datei abgebildete Objekte

Motiv

Dateiversionen

Klicke auf einen Zeitpunkt, um diese Version zu laden.

Version vomVorschaubildMaßeBenutzerKommentar
aktuell04:01, 1. Jul. 2008Vorschaubild der Version vom 04:01, 1. Jul. 20082.204 × 1.550 (670 KB)wikimediacommons>Oleg Alexandrovchange viewing angle

Die folgenden 4 Seiten verwenden diese Datei: