Tập tin:Triple torus illustration.png

Nội dung trang không được hỗ trợ ở ngôn ngữ khác.
Tập tin này từ Wikimedia Commons
Bách khoa toàn thư mở Wikipedia

Tập tin gốc(2.204×1.550 điểm ảnh, kích thước tập tin: 670 kB, kiểu MIME: image/png)

Miêu tả Illustration of a triple torus
Ngày (UTC)
Nguồn gốc Tác phẩm được tạo bởi người tải lên, MATLAB source code below
 
This diagram was created with MATLAB.
Tác giả Oleg Alexandrov
Public domain Tôi, người giữ bản quyền của tác phẩm này, chuyển tác phẩm này vào phạm vi công cộng. Điều này có giá trị trên toàn thế giới.
Tại một quốc gia mà luật pháp không cho phép điều này, thì:
Tôi cho phép tất cả mọi người được quyền sử dụng tác phẩm này với bất cứ mục đích nào, không kèm theo bất kỳ điều kiện nào, trừ phi luật pháp yêu cầu những điều kiện đó.

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

Chú thích

Ghi một dòng giải thích những gì có trong tập tin này

Khoản mục được tả trong tập tin này

mô tả

Lịch sử tập tin

Nhấn vào ngày/giờ để xem nội dung tập tin tại thời điểm đó.

Ngày/giờHình xem trướcKích cỡThành viênMiêu tả
hiện tại03:01, ngày 1 tháng 7 năm 2008Hình xem trước của phiên bản lúc 03:01, ngày 1 tháng 7 năm 20082.204×1.550 (670 kB)Oleg Alexandrovchange viewing angle
02:48, ngày 1 tháng 7 năm 2008Hình xem trước của phiên bản lúc 02:48, ngày 1 tháng 7 năm 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, ngày 23 tháng 6 năm 2008Hình xem trước của phiên bản lúc 04:42, ngày 23 tháng 6 năm 20081.320×1.000 (366 kB)Oleg AlexandrovFix a small imperfection in Gimp
02:54, ngày 10 tháng 9 năm 2007Hình xem trước của phiên bản lúc 02:54, ngày 10 tháng 9 năm 20071.320×1.000 (366 kB)Oleg AlexandrovTweak
18:01, ngày 7 tháng 9 năm 2007Hình xem trước của phiên bản lúc 18:01, ngày 7 tháng 9 năm 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
Có 3 trang tại Wikipedia tiếng Việt có liên kết đến tập tin (không hiển thị trang ở các dự án khác):

Sử dụng tập tin toàn cục

Những wiki sau đang sử dụng tập tin này:

Xem thêm các trang toàn cục sử dụng tập tin này.