Fil:Triple torus illustration.png

Sideinnhaldet er ikkje støtta på andre språk.
Frå Wikipedia – det frie oppslagsverket

Opphavleg fil(2 204 × 1 550 pikslar, filstorleik: 670 KB, MIME-type: image/png)

Denne fila er frå Wikimedia Commons og kan verta nytta av andre prosjekt. Skildringa frå filskildringssida der er vist nedanfor.



Følgjande er henta frå filomtalen åt denne fila på Wikimedia Commons:


Skildring Illustration of a triple torus
Dato (UTC)
Kjelde Eige arbeid, MATLAB source code below
 
PNG Rastergrafikken vart laga med MATLAB.
Opphavsperson Oleg Alexandrov
Public domain Eg, opphavsrettshaldaren til dette verket, frigjev dette verket til ålmenta. Dette gjeld over heile verda.
I somme landa er dette kan henda ikkje rettsleg mogeleg. I det fall:
Eg gjev kven som helst rettane til å nytta dette verket for kva som helst føremål og utan vilkår, minder vilkår er kravde etter lova.

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

Bilettekstar

Skriv inn ei line med tekst som skildrar fila

Element som er med i denne fila

motiv

7. september 2007

Filhistorikk

Klikk på dato/klokkeslett for å sjå fila slik ho var på det tidspunktet.

Dato/klokkeslettMiniatyrbileteOppløysingBrukarKommentar
gjeldande1. juli 2008 kl. 05:01Miniatyrbilete av versjonen frå 1. juli 2008 kl. 05:012 204 × 1 550 (670 KB)Oleg Alexandrovchange viewing angle
1. juli 2008 kl. 04:48Miniatyrbilete av versjonen frå 1. juli 2008 kl. 04:481 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.
23. juni 2008 kl. 06:42Miniatyrbilete av versjonen frå 23. juni 2008 kl. 06:421 320 × 1 000 (366 KB)Oleg AlexandrovFix a small imperfection in Gimp
10. september 2007 kl. 04:54Miniatyrbilete av versjonen frå 10. september 2007 kl. 04:541 320 × 1 000 (366 KB)Oleg AlexandrovTweak
7. september 2007 kl. 20:01Miniatyrbilete av versjonen frå 7. september 2007 kl. 20:01372 × 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

Den følgjande sida bruker denne fila:

Global filbruk

Desse andre wikiane nyttar fila:

Sjå meir global bruk av denne fila.