function [rng] = range_(begin_, end_, n)
step = (end_ - begin_) / (n - 1);
rng = begin_:step:end_;
end
function [res] = repeat(x, n)
res = x;
for i = 2:n
res = [res, x];
end
end
function torus(n=100, a=2, b=9)
u = reshape(repeat(range_(0, 2*pi, length=n), n), n, n);
v = u';
x = (b + a * cos(u)) * cos(v);
y = (b + a * cos(u)) * sin(v);
z = a * sin(u);
colormap(pink)
surf(x, y, z)
pbaspect([4, 4, 1])
end
torus(50, 5, 10)
matgeom パッケージにトーラスを描く関数があった。
標準では緑色なのだが,赤にしてもやはり浮き輪にしか見えない。赤道の位置(?)に明るい線があるからかな。
pkg load matgeom
figure;
drawTorus([50 50 50 30 10 30 45], "facecolor", "red");
axis equal; view([95 10]); light;
![](https://blogimg.goo.ne.jp/user_image/6c/35/d036df332f47706092cde4361e79b3b0.png)
pkg load matgeom
figure;
drawTorus([0 0 0 30 10 0 0], "facecolor", [0xff 0xd3 0x26]/255, "nPhi", 240, "nTheta", 120);
axis equal; view([60 30]); light;
![](https://blogimg.goo.ne.jp/user_image/75/47/f5366ffd76ea3f1e0ef13aa172a21368.png)