پرونده:Triple torus illustration.png
از testwiki
پرش به ناوبری
پرش به جستجو
اندازهٔ این پیشنمایش: ۸۰۰ × ۵۶۳ پیکسل. کیفیتهای دیگر: ۳۲۰ × ۲۲۵ پیکسل | ۶۴۰ × ۴۵۰ پیکسل | ۱٬۰۲۴ × ۷۲۰ پیکسل | ۱٬۲۸۰ × ۹۰۰ پیکسل | ۲٬۲۰۴ × ۱٬۵۵۰ پیکسل.
پروندهٔ اصلی (۲٬۲۰۴ × ۱٬۵۵۰ پیکسل، اندازهٔ پرونده: ۶۷۰ کیلوبایت، نوع MIME پرونده: image/png)
این پرونده از ویکیانبار است و ممکن است توسط پروژههای دیگر هم استفاده شده باشد. توضیحات موجود در صفحهٔ توضیحات پرونده در آنجا، در زیر نشان داده شده است.
| توضیحTriple torus illustration.png | Illustration of a triple torus |
| تاریخ | (UTC) |
| منبع | اثر شخصی, MATLAB source code below |
| پدیدآور | Oleg Alexandrov |
| Public domainPublic domainfalsefalse |
| من، دارنده حق تکثیر این اثر، این اثر را به مالکیت عمومی منتشر میکنم. این قابل اجرا در تمام نقاط جهان است. در برخی از کشورها ممکن است به صورت قانونی این امکانپذیر نباشد؛ اگر چنین است: من اجازهٔ استفاده از این اثر را برای هر مقصودی، بدون هیچگونه شرایطی میدهم، تا وقتی که این شرایط توسط قانون مستلزم نشده باشد. |
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
عنوان
شرحی یکخطی از محتوای این فایل اضافه کنید
آیتمهایی که در این پرونده نمایش داده شدهاند
توصیفها
genus-three surface انگلیسی
این خصوصیت مقداری دارد اما نامشخص است.
source of file انگلیسی
original creation by uploader انگلیسی
۷ سپتامبر 2007
تاریخچهٔ پرونده
روی تاریخ/زمانها کلیک کنید تا نسخهٔ مربوط به آن هنگام را ببینید.
| تاریخ/زمان | بندانگشتی | ابعاد | کاربر | توضیح | |
|---|---|---|---|---|---|
| کنونی | ۱ ژوئیهٔ ۲۰۰۸، ساعت ۰۴:۰۱ | ۲٬۲۰۴ در ۱٬۵۵۰ (۶۷۰ کیلوبایت) | wikimediacommons>Oleg Alexandrov | change viewing angle |
کاربرد پرونده
صفحهٔ زیر از این تصویر استفاده میکند: