|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MATLAB中的rotate旋转函数可以旋转一些3D对象,但如何才能绕任意指定轴旋转呢?
# g& T A3 k. t$ A' R4 J
1 q% c; f* O5 r- }按照官方文档rotate的使用说明,rotate(h,direction,alpha) 将图形对象 h 旋转 alpha 度。指定 h 为曲面、补片、线条、文本或图像对象。direction 是一个二元素或三元素向量,它与旋转轴原点共同确定旋转轴。旋转轴的默认原点是图框中心。该点未必是坐标区的原点。
! u3 F* z; s4 F3 K+ m/ ~
$ t: X2 a5 X: d+ R g j ^8 h
& Y, f( o- \6 o/ x文档中的一个图片:" u5 E4 b) P. Y9 Z" Z) k) Y! W2 E5 _
+ N# ^+ _9 M" A& O w这里的P点就是那个direction? origin指图片中心?
8 D6 Q/ y( C* a1 ~! v" v: }; T1 c. P6 Q
. I* k. M0 Q& z! T2 Y) ]
写了一个小的测试程序进行测试:: I, Q( d* D1 R1 b$ J: a- J# o
- 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度9 O2 v1 h2 X) ]' n6 |. B/ _
. t0 ?# h+ m7 l2 u* s. Q; Y
4 h/ ^! h6 ?' R$ y0 x" C* }测试效果:) w% s* n1 L' P0 Y
( J; V0 h" X1 ?( N- a9 D+ M+ ~. ^0 J可以看到图像不是按照[0 1 0]即y轴进行旋转,而是绕“处在图片中心,与y轴平行的某个轴” 进行旋转。
5 o P9 x" F% d# r8 H& @那如何才能绕坐标中的y轴(也就是图中我画的那条红线)旋转呢?' v) j% I* ]9 Q* _
或者能否绕3维空间中的任意指定轴进行旋转呢?请教大神,非常感谢!" j; j9 C2 \" z4 F
|
|