我知道的唯一方法是计算圆柱体的变换向量,但这非常复杂且缓慢。还有其他方法吗?
现在我们总是围绕 X+Y 轴绘制圆柱体。代码如下:
distance = (
(point1[0] - point2[0]) ** 2
(point1[1] - point2[1]) ** 2
(point1[2] - point2[2]) ** 2
) ** 0.5
asy += f"draw(surface(cylinder({tuple(point1)}, 1, {distance}, (1, 1, 0))), rgb(1, 1, 1));"
其中point1
和point2
的格式为[x, y, z]
。
编辑:
我想画一个圆柱体,底部圆的中心在里面point1
,顶部圆的中心也在里面point2
(像一条线,但是是三维的)。
高度是两点之间的距离。我不想画一个特定的圆柱体,而是画一个通用的圆柱体。
答案1
这是你想要的吗?对于开放式圆柱体:
// http://asymptote.ualberta.ca/
unitsize(1cm);
import solids;
currentprojection=orthographic(3,1,4,center=true,zoom=.9);
real r=1.5;
triple A=(3,2,-1), B=(2,-2,4);
dot("$A$",A,red);
dot("$B$",B,red);
real h=abs(A-B);
pen p=orange+opacity(.5);
revolution cyl=cylinder(A,r,h,B-A);
draw(surface(cyl),p);
对于封闭的圆柱体,只需添加 2 个磁盘
draw(surface(circle(A,r,normal=B-A)),p);
draw(surface(circle(B,r,normal=B-A)),p);