如何用Matlab对二维图形绕任意点进行旋转

作者:追风筝的人 | 创建时间: 2023-04-28
在使用Matlab编程时,常常需要将所得的数据或者二维图形绕任意点(a,b)进行旋转,在这里以(1,1)点为例对一个小正方形进行旋转。例中介绍了详细步骤,在应用时可将所有转换矩阵相乘以简化程序。...
如何用Matlab对二维图形绕任意点进行旋转

绘制一个正方形

在软件中键入以下程序: %绕任意轴旋转,本例中旋转中心坐标点为(1,1) clear clc x=[0 2 2 0 0]; y=[0 0 2 2 0]; plot(x,y,'r'); hold on axis equal axis([-1 3 -1 3]) 此段代码将绘制出2×2的红色正方形,如图所示

移动旋转中心至坐标原点

%首先,将图形旋转中心移动至坐标原点,M为移动矩阵,其中两个-1是旧坐标系坐标原点在新坐标系下的表示 M=[1    0     -1; 0    1     -1; 0    0     1;]; R(1,:)=x; R(2,:)=y; R(3,:)=1;%将二维坐标表示成(x,y,1)的形式 R1=M*R; plot(R1(1,:),R1(2,:),'g') 移动结果为绿色正方形,如图所示

旋转图形

%然后,旋转该图形 M1=[cos(pi/6)   sin(pi/6)     0; -sin(pi/6)   cos(pi/6)    0; 0           0         1]; R2=M1*R1; plot(R2(1,:),R2(2,:),'b') 旋转结果为蓝色正方形,如图所示

将旋转中心移动至原来位置

%最后,将旋转中心移动至原来位置 R3=inv(M)*R2;%M的逆矩阵 plot(R3(1,:),R3(2,:),'k') 最终结果为黑色正方形,如图所示

温馨提示

R3=inv(M)*R2;还可以用R3=M\R2;代替
点击展开全文

更多推荐