|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MATLAB中的rotate旋转函数可以旋转一些3D对象,但如何才能绕任意指定轴旋转呢?! I' S. X- T3 [4 ^6 t- o
% F" o" x. f, i
按照官方文档rotate的使用说明,rotate(h,direction,alpha) 将图形对象 h 旋转 alpha 度。指定 h 为曲面、补片、线条、文本或图像对象。direction 是一个二元素或三元素向量,它与旋转轴原点共同确定旋转轴。旋转轴的默认原点是图框中心。该点未必是坐标区的原点。 p4 u$ ~* L$ U$ o7 U6 m
2 r5 [! H* F5 S
9 R0 F$ ]2 ~( t文档中的一个图片:
4 G* X) y6 q- Q. N9 F9 y2 u
+ `3 W% q6 X2 E5 a' @
这里的P点就是那个direction? origin指图片中心?
0 W( J' m6 \+ d$ `+ f4 J9 e3 p9 H5 c' R0 x! P: p+ N$ D9 M8 _
1 y& n6 m5 r) ]# s& y2 R- ^写了一个小的测试程序进行测试:
6 d0 ~3 D/ m) l# A2 C- 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 z# Q- e* @) z" Z" |9 f8 h
* d, X7 N; c3 V! |7 \
! d) g7 u0 o' v, Y: L+ w; e$ h9 h0 m% t测试效果:& D5 Z& ^" }- K9 j. ?5 R
! u. Y: K. H9 Y% [) I- R/ X
可以看到图像不是按照[0 1 0]即y轴进行旋转,而是绕“处在图片中心,与y轴平行的某个轴” 进行旋转。
( B7 G+ B' j0 P: Q那如何才能绕坐标中的y轴(也就是图中我画的那条红线)旋转呢?
/ F. Q% Y) R: u# f) _0 f或者能否绕3维空间中的任意指定轴进行旋转呢?请教大神,非常感谢!
" S3 d+ j0 v. G0 m/ N |
|