پرونده:Triple torus illustration.png

پروندهٔ اصلی(۲٬۲۰۴ × ۱٬۵۵۰ پیکسل، اندازهٔ پرونده: ۶۷۰ کیلوبایت، نوع MIME پرونده: image/png)

توضیح Illustration of a triple torus
تاریخ (UTC)
منبع اثر شخصی, MATLAB source code below
 
این نمودار با MATLAB ساخته شده است.
پدیدآور Oleg Alexandrov
Public domain من، دارنده حق تکثیر این اثر، این اثر را به مالکیت عمومی منتشر می‌کنم. این قابل اجرا در تمام نقاط جهان است.
در برخی از کشورها ممکن است به صورت قانونی این امکان‌پذیر نباشد؛ اگر چنین است:
من اجازهٔ استفاده از این اثر را برای هر مقصودی، بدون هیچ‌گونه شرایطی می‌دهم، تا وقتی که این شرایط توسط قانون مستلزم نشده باشد.

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

عنوان

شرحی یک‌خطی از محتوای این فایل اضافه کنید

آیتم‌هایی که در این پرونده نمایش داده شده‌اند

توصیف‌ها

source of file انگلیسی

تاریخچهٔ پرونده

روی تاریخ/زمان‌ها کلیک کنید تا نسخهٔ مربوط به آن هنگام را ببینید.

تاریخ/زمانبندانگشتیابعادکاربرتوضیح
کنونی‏۱ ژوئیهٔ ۲۰۰۸، ساعت ۰۳:۰۱تصویر بندانگشتی از نسخهٔ مورخ ‏۱ ژوئیهٔ ۲۰۰۸، ساعت ۰۳:۰۱۲٬۲۰۴ در ۱٬۵۵۰ (۶۷۰ کیلوبایت)Oleg Alexandrovchange viewing angle
‏۱ ژوئیهٔ ۲۰۰۸، ساعت ۰۲:۴۸تصویر بندانگشتی از نسخهٔ مورخ ‏۱ ژوئیهٔ ۲۰۰۸، ساعت ۰۲:۴۸۱٬۹۵۸ در ۱٬۳۳۵ (۵۳۰ کیلوبایت)Oleg AlexandrovImplementation using isosurface. Much better quality and much simpler than using patches. Will upload source code too. Same license, public domain.
‏۲۳ ژوئن ۲۰۰۸، ساعت ۰۴:۴۲تصویر بندانگشتی از نسخهٔ مورخ ‏۲۳ ژوئن ۲۰۰۸، ساعت ۰۴:۴۲۱٬۳۲۰ در ۱٬۰۰۰ (۳۶۶ کیلوبایت)Oleg AlexandrovFix a small imperfection in Gimp
‏۱۰ سپتامبر ۲۰۰۷، ساعت ۰۲:۵۴تصویر بندانگشتی از نسخهٔ مورخ ‏۱۰ سپتامبر ۲۰۰۷، ساعت ۰۲:۵۴۱٬۳۲۰ در ۱٬۰۰۰ (۳۶۶ کیلوبایت)Oleg AlexandrovTweak
‏۷ سپتامبر ۲۰۰۷، ساعت ۱۸:۰۱تصویر بندانگشتی از نسخهٔ مورخ ‏۷ سپتامبر ۲۰۰۷، ساعت ۱۸:۰۱۳۷۲ در ۲۶۳ (۴۹ کیلوبایت)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

صفحهٔ زیر از این تصویر استفاده می‌کند:

کاربرد سراسری پرونده

ویکی‌های دیگر زیر از این پرونده استفاده می‌کنند:

نمایش استفاده‌های سراسری از این پرونده.