|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MATLAB中的rotate旋转函数可以旋转一些3D对象,但如何才能绕任意指定轴旋转呢?2 c' q+ w8 O" A
4 B) V/ U& \: n/ C4 c按照官方文档rotate的使用说明,rotate(h,direction,alpha) 将图形对象 h 旋转 alpha 度。指定 h 为曲面、补片、线条、文本或图像对象。direction 是一个二元素或三元素向量,它与旋转轴原点共同确定旋转轴。旋转轴的默认原点是图框中心。该点未必是坐标区的原点。6 n. v- c: Z, o2 e3 c8 u. J+ J o
7 N% U- i' }5 j7 w( \6 x, i$ m8 w+ W) k/ U A7 w1 _
文档中的一个图片:6 g4 R& o+ R, Z( z6 L
8 w3 I$ v8 \2 l* j) T5 t3 z这里的P点就是那个direction? origin指图片中心?
. [) S% G% I. t# R( n& f: x
( n6 M+ j- Q4 T# h" S
9 t% I- y. B. K h, }写了一个小的测试程序进行测试:
" H" f0 l F3 J! \- 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度
$ j9 I: [4 ]0 R# X 2 u& s/ T7 f8 u; p" n
) h2 h T1 ?) w
测试效果:
4 u8 u6 k4 f+ R( h$ c
& K9 W8 x7 u$ t3 \% z1 y- ~; {0 }2 K可以看到图像不是按照[0 1 0]即y轴进行旋转,而是绕“处在图片中心,与y轴平行的某个轴” 进行旋转。+ A1 k) ^: Q8 V6 {' h/ {! k
那如何才能绕坐标中的y轴(也就是图中我画的那条红线)旋转呢?2 n! m: l3 F# U I! P3 E3 T
或者能否绕3维空间中的任意指定轴进行旋转呢?请教大神,非常感谢!
3 X2 K) s P+ E% q+ c. Z |
|