Matlab 创建轴以不同方式居中的圆柱体

Matlab 创建轴以不同方式居中的圆柱体,matlab,geometry,Matlab,Geometry,我知道Matlab有一个叫做圆柱体的函数,当圆周上的点数和半径长度相等时,它可以为圆柱体创建点。如果我不想要单位圆柱体,也不希望它以默认轴为中心(例如沿z轴),该怎么办?创建这样一个圆柱体的最简单方法是什么?提前谢谢。将这些点乘以你最喜欢的a、a和a的组合。前面的答案很好,但是你可以让matlab为你做更多的工作(因为圆柱体的结果将x,y,z分量分开,你需要做一点来进行旋转矩阵乘法)。要使圆柱体的底部中心位于[x0 y0 z0],按[xf yf xf]缩放(除非你想要椭圆圆柱体,否则使用xf=y

我知道Matlab有一个叫做圆柱体的函数,当圆周上的点数和半径长度相等时,它可以为圆柱体创建点。如果我不想要单位圆柱体,也不希望它以默认轴为中心(例如沿z轴),该怎么办?创建这样一个圆柱体的最简单方法是什么?提前谢谢。

将这些点乘以你最喜欢的a、a和a的组合。

前面的答案很好,但是你可以让matlab为你做更多的工作(因为
圆柱体的结果将
x,y,z
分量分开,你需要做一点来进行旋转矩阵乘法)。要使圆柱体的底部中心位于
[x0 y0 z0]
,按
[xf yf xf]
缩放(除非你想要椭圆圆柱体,否则使用
xf=yf
),使用:

如果还希望旋转它,使其不沿z轴对齐,请使用
旋转
。例如,要绕
x轴旋转90度,使其沿y轴对齐,请使用:

rotate(h,[1 0 0],90)

谢谢。这实际上是我做的,尽管可以使用前面提到的矩阵更优雅地完成。还有一个注意事项。一旦我创建网格并使用Matlab函数旋转,我如何从h检索点?@stanigator:
get(h,'XData')
get(h,'YData')
get(h,'ZData'))
。这些函数与
cylinder
的结果的形式相同(默认值
2 x 21
)。我在文件交换上发现了一个更友好的通用函数,并为此编写了一个答案:
rotate(h,[1 0 0],90)