通过点绘制圆柱体

通过点绘制圆柱体

我知道的唯一方法是计算圆柱体的变换向量,但这非常复杂且缓慢。还有其他方法吗?

现在我们总是围绕 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));"

其中point1point2的格式为[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);

相关内容