|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MATLAB中的rotate旋转函数可以旋转一些3D对象,但如何才能绕任意指定轴旋转呢?
& W6 C5 j: t* b5 O+ Y
# n6 _" y* ^" T6 U. e) G" F# E按照官方文档rotate的使用说明,rotate(h,direction,alpha) 将图形对象 h 旋转 alpha 度。指定 h 为曲面、补片、线条、文本或图像对象。direction 是一个二元素或三元素向量,它与旋转轴原点共同确定旋转轴。旋转轴的默认原点是图框中心。该点未必是坐标区的原点。1 p- l0 B5 l2 P, K4 x% `
6 v$ q( o5 s' \; ?, T
# X1 T3 O) z; I; o文档中的一个图片:% x! B: }& t T! ^ j
* u% r: t& x. W) Z9 @3 d L) L
这里的P点就是那个direction? origin指图片中心?, \9 N9 l% X( g2 B1 G" M: X
5 ~7 S4 |7 S7 N7 r: h' M+ U6 s. e+ B6 I; G" ]: s3 R) S
写了一个小的测试程序进行测试:( H( @9 q% O( R! C0 m' y, j1 ]% y
- figure;
- plot3(0,0,0,'ko','MarkeRFaceColor','k');%画出原点
- hold on;grid on;
- plot3([0,0],[0,200],[0,0],'r');%画一条轴
- xlabel('x/mm');ylabel('y/mm');zlabel('z/mm');
- x = linspace(0,300,100);
- y = linspace(0,200,100);
- z = zeros(100,100);
- plan0 = surf(x,y,z);alpha(.3);shading interp %画平面0
- plan1 = surf(x,y,z);alpha(.3);shading interp %画平面1
- plan2 = surf(x,y,z);alpha(.3);shading interp %画平面2
- direct=[0 1 0];
- rotate(plan1,direct,10);%平面1旋转10度
- rotate(plan2,direct,30);%平面2旋转30度2 k; p3 A( @5 f* ~9 ?
* D* S/ k+ ^: ?9 t: k) t0 U
( s1 W- Y6 d) M; V+ F. g+ g测试效果:
" E: \, v# t* h- O5 j
' W' s9 w; W9 H' {可以看到图像不是按照[0 1 0]即y轴进行旋转,而是绕“处在图片中心,与y轴平行的某个轴” 进行旋转。
( b/ T& }8 |9 j( ]. _那如何才能绕坐标中的y轴(也就是图中我画的那条红线)旋转呢?
1 w5 t9 k) P- S: i或者能否绕3维空间中的任意指定轴进行旋转呢?请教大神,非常感谢!2 U; t Z& a7 C" [2 C
|
|