|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MATLAB中的rotate旋转函数可以旋转一些3D对象,但如何才能绕任意指定轴旋转呢?4 k2 w; S2 g6 ]0 g6 ?8 L6 }5 C- |
1 h! q* V" P A7 [) q
按照官方文档rotate的使用说明,rotate(h,direction,alpha) 将图形对象 h 旋转 alpha 度。指定 h 为曲面、补片、线条、文本或图像对象。direction 是一个二元素或三元素向量,它与旋转轴原点共同确定旋转轴。旋转轴的默认原点是图框中心。该点未必是坐标区的原点。, c$ @8 c; K4 q' w% x3 E
; V! D6 [% E, ^
, A( e% e3 ]2 J. v
文档中的一个图片:
0 b: |% _7 |- O- E! z3 m5 _
$ z0 ]. u/ U! n$ B. p3 w4 a! J
这里的P点就是那个direction? origin指图片中心?
. a' |: f' k+ D; k& f2 O3 k
8 O9 @4 ]9 g/ e" q6 w) w2 C
$ l6 ~/ j$ T0 l1 ? I写了一个小的测试程序进行测试:
2 {5 ~1 d- g; ^9 f- 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度
" |0 ^9 W- t% L/ [: f: D% Y
/ f! k) t& S+ @% B" F7 k0 p. r+ A$ o' x4 Q5 j% v
测试效果:1 j% ~2 G6 t2 y& }# O" A
8 A5 z! a# v% d. P% G
可以看到图像不是按照[0 1 0]即y轴进行旋转,而是绕“处在图片中心,与y轴平行的某个轴” 进行旋转。
2 U; x" _1 B, Q那如何才能绕坐标中的y轴(也就是图中我画的那条红线)旋转呢?: [" p4 b7 E Z. w7 _6 ]
或者能否绕3维空间中的任意指定轴进行旋转呢?请教大神,非常感谢!
9 w+ W1 h9 b' O* L |
|