I know Matlab has a function called cylinder to create the points for a cylinder when number of points along the circumference, and the radius length. What if I don't want a unit cylinder, and also don't want it to center at the default axis (for example along z-axis)? What would be the easiest approach to create such a cylinder? Thanks in advance.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
The previous answer is fine, but you can get matlab to do more of the work for you (because the results of cylinder
separate x,y,z
components you need to work a little to do the matrix multiplication for the rotation). To have the center of base of the cylinder at [x0 y0 z0]
, scaled by [xf yf xf]
(use xf=yf
unless you want an elliptic cylinder), use:
[x y z] = cylinder;
h=mesh(x*xf+x0,y*yf+y0,z*zf+z0)
If you also want to rotate it so it isn't aligned along the z-axis, use rotate
. For example, to rotate about the x-axis
by 90 degrees, so it's aligned along the y-axis, use:
rotate(h,[1 0 0],90)
回答2:
Multiply the points by your favourite combination of a scaling matrix, a translation matrix, and a rotation matrix.