|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MATLAB中的rotate旋转函数可以旋转一些3D对象,但如何才能绕任意指定轴旋转呢?4 g$ p+ P9 h9 I3 X' I
) Q' a9 I# @! M* w, R
按照官方文档rotate的使用说明,rotate(h,direction,alpha) 将图形对象 h 旋转 alpha 度。指定 h 为曲面、补片、线条、文本或图像对象。direction 是一个二元素或三元素向量,它与旋转轴原点共同确定旋转轴。旋转轴的默认原点是图框中心。该点未必是坐标区的原点。" E/ ]3 T7 h1 n# Q6 P" i, o
- f4 ~2 L8 x3 O, G. }
( A- K6 A' X: V$ Q
文档中的一个图片:" G& A7 G4 {2 K2 N& K) t
( v# V$ @( s9 x" E这里的P点就是那个direction? origin指图片中心?% g0 [" k9 ~! J& i | Y
: l5 t7 j1 w+ I( Y
4 w8 \5 D5 _6 g3 h" _6 \& ?4 h
写了一个小的测试程序进行测试:3 n* q6 r e" \+ X" i# z
- 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度
- C0 Z$ U+ x: C" }- E/ u # @- y7 N% e8 c4 K- T. j
0 ]3 Y* |+ |& G4 q8 ?. M测试效果:
. \6 |* C1 h, o* {! e# K, ^ }: h, k
" V+ g/ ?- _4 M h# S可以看到图像不是按照[0 1 0]即y轴进行旋转,而是绕“处在图片中心,与y轴平行的某个轴” 进行旋转。; B3 ?: z1 n( p% j7 f
那如何才能绕坐标中的y轴(也就是图中我画的那条红线)旋转呢?2 H6 C& {5 I+ G
或者能否绕3维空间中的任意指定轴进行旋转呢?请教大神,非常感谢!. u/ {' c, }/ o5 U9 [; f! c
|
|