Tập tin:Triple torus illustration.png
Từ testwiki
Bước tới điều hướng
Bước tới tìm kiếm
Kích thước hình xem trước: 800×563 điểm ảnh. Độ phân giải khác: 320×225 điểm ảnh | 640×450 điểm ảnh | 1.024×720 điểm ảnh | 1.280×900 điểm ảnh | 2.204×1.550 điểm ảnh.
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)
Tập tin này được lưu ở Wikimedia Commons và nó có thể được sử dụng ở các dự án khác. Lời miêu tả của tập tin tại trang mô tả được hiển thị dưới đây.
| Miêu tảTriple torus illustration.png | 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 |
| Tác giả | Oleg Alexandrov |
| Public domainPublic domainfalsefalse |
| 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ả
genus-three surface Tiếng Anh
Giá trị nào đó không có khoản mục Wikidata
7 9 2007
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ước | Kích cỡ | Thành viên | Miêu tả | |
|---|---|---|---|---|---|
| hiện tại | 04:01, ngày 1 tháng 7 năm 2008 | 2.204×1.550 (670 kB) | wikimediacommons>Oleg Alexandrov | change viewing angle |
Trang sử dụng tập tin
2 trang sau sử dụng tập tin này: