|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MATLAB中的rotate旋转函数可以旋转一些3D对象,但如何才能绕任意指定轴旋转呢?4 ^. V/ X' U2 U$ L* u2 O- J3 Y
* f/ N1 C1 ^) f8 o8 @4 I/ l5 ?
按照官方文档rotate的使用说明,rotate(h,direction,alpha) 将图形对象 h 旋转 alpha 度。指定 h 为曲面、补片、线条、文本或图像对象。direction 是一个二元素或三元素向量,它与旋转轴原点共同确定旋转轴。旋转轴的默认原点是图框中心。该点未必是坐标区的原点。
8 o6 O/ E) _7 H8 `! ]+ f: i# q: Y4 Z
& l) R ~, }( g, O, E4 Z4 X
文档中的一个图片:+ Q& S! y' V$ W$ Z1 w
! @: T ?6 E; Q% L2 j
这里的P点就是那个direction? origin指图片中心?
+ M. Z" |% F% m6 u* k. l }3 e5 P8 F& S) q9 t7 j: K& _1 {" h
$ r$ Z/ c5 S& j- @- D3 e
写了一个小的测试程序进行测试:
/ c: r2 B' R" a, L; a% a. B" ~- 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度
' W& B1 A2 N: B5 q0 m% I( b/ ?- N 0 r* ^ |! k3 B! ^/ L3 R) `% u1 \
! [- u2 @$ R. ~! v4 l* ~7 d测试效果:* O E t! ~3 a+ R; b
) W4 e( G/ I/ n* V
可以看到图像不是按照[0 1 0]即y轴进行旋转,而是绕“处在图片中心,与y轴平行的某个轴” 进行旋转。
6 S2 S, k; o! s5 j6 v那如何才能绕坐标中的y轴(也就是图中我画的那条红线)旋转呢?
Z4 O; p- o" M1 H& _* m9 \0 N或者能否绕3维空间中的任意指定轴进行旋转呢?请教大神,非常感谢!
* b8 }+ r. p4 K+ z8 T) w% V$ H |
|