ملف:Triple torus illustration.png

الملف الأصلي(2٬204 × 1٬550 بكسل حجم الملف: 670 كيلوبايت، نوع 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

الشروحات

أضف شرحاً من سطر واحد لما يُمثِّله هذا الملف

العناصر المصورة في هذا الملف

يُصوِّر

٧ سبتمبر 2007

تاريخ الملف

اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.

زمن/تاريخصورة مصغرةالأبعادمستخدمتعليق
حالي03:01، 1 يوليو 2008تصغير للنسخة بتاريخ 03:01، 1 يوليو 20082٬204 × 1٬550 (670 كيلوبايت)Oleg Alexandrovchange viewing angle
02:48، 1 يوليو 2008تصغير للنسخة بتاريخ 02:48، 1 يوليو 20081٬958 × 1٬335 (530 كيلوبايت)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 يونيو 2008تصغير للنسخة بتاريخ 04:42، 23 يونيو 20081٬320 × 1٬000 (366 كيلوبايت)Oleg AlexandrovFix a small imperfection in Gimp
02:54، 10 سبتمبر 2007تصغير للنسخة بتاريخ 02:54، 10 سبتمبر 20071٬320 × 1٬000 (366 كيلوبايت)Oleg AlexandrovTweak
18:01، 7 سبتمبر 2007تصغير للنسخة بتاريخ 18:01، 7 سبتمبر 2007372 × 263 (49 كيلوبايت)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

الصفحة التالية تستخدم هذا الملف:

الاستخدام العالمي للملف

الويكيات الأخرى التالية تستخدم هذا الملف:

اعرض المزيد من الاستخدام العام لهذا الملف.