MATLAB坐标系变换动画演示

%*****************************************
%******直角坐标系的转换及动画演示************
%*****************************************
clear all;
Iz_a=[0 0 1]';%原坐标系下的Z轴
Iy_a=[0 1 0]';%原坐标系下的Y轴
Ix_a=[1 0 0]';%原坐标系下的X轴
%绘制原三维坐标系O-XYZ的XYZ轴
for t=-10:0.1:10plot3(Iz_a(1),Iz_a(2),t*Iz_a(3));%绘制Z轴plot3(Iy_a(1),t*Iy_a(2),Iy_a(3));%绘制Y轴plot3(t*Ix_a(1),Ix_a(2),Ix_a(3));%绘制X轴hold on;
end
r_x=deg2rad(60);%原坐标系绕X轴旋转60度
r_y=deg2rad(60);%原坐标系绕Y轴旋转60度
r_z=deg2rad(60);%原坐标系绕Z轴旋转60度
%坐标系绕X轴旋转的转换矩阵Tx
Tx=[1        0          0;0  cos(r_x)  sin(r_x);0 -sin(r_x)  cos(r_x)];
%坐标系绕Y轴旋转的转换矩阵Ty
Ty=[cos(r_x) 0 -sin(r_x);0        1         0;0 sin(r_x)  cos(r_x)];
%坐标系绕Z轴旋转的转换矩阵Tz
Tz=[ cos(r_x) sin(r_x) 0;-sin(r_x) cos(r_x) 0;0         0        1]; 
Iz_b=Tx*Iz_a;%绕X轴旋转后新坐标系下的Z轴
Iy_b=Tx*Iy_a;%绕X轴旋转后新坐标系下的Y轴
Ix_b=Tx*Ix_a;%绕X轴旋转后新坐标系下的X轴
for t=-10:0.1:10plot3(t*Iz_b(1),t*Iz_b(2),t*Iz_b(3),'r');%绘制Z轴plot3(t*Iy_b(1),t*Iy_b(2),t*Iy_b(3),'r');%绘制Y轴plot3(t*Ix_b(1),t*Ix_b(2),t*Ix_b(3),'r');%绘制X轴hold on;
end
%********************************************
%******动画演示坐标系绕X轴旋转过程**************
%********************************************
clear all;
Iz_a=[0 0 1]';%原坐标系下的Z轴
Iy_a=[0 1 0]';%原坐标系下的Y轴
Ix_a=[1 0 0]';%原坐标系下的X轴
for rx=0:5:60Rx=deg2rad(rx);%坐标系绕X轴旋转的转换矩阵TxTx=[1        0        0;0  cos(Rx)  sin(Rx);0 -sin(Rx)  cos(Rx)];Iz_b=Tx*Iz_a;%绕X轴旋转后新坐标系下的Z轴Iy_b=Tx*Iy_a;%绕X轴旋转后新坐标系下的Y轴Ix_b=Tx*Ix_a;%绕X轴旋转后新坐标系下的X轴for t=-10:0.1:10plot3(t*Iz_b(1),t*Iz_b(2),t*Iz_b(3),'r');%绘制Z轴plot3(t*Iy_b(1),t*Iy_b(2),t*Iy_b(3),'b');%绘制Y轴plot3(t*Ix_b(1),t*Ix_b(2),t*Ix_b(3),'g');%绘制X轴hold on;endpause(0.1);
end
%************************************************
%******动画演示坐标系绕Z-Y-X轴旋转过程**************
%************************************************
clear all;
Iz_a=[0 0 1]';%原坐标系下的Z轴
Iy_a=[0 1 0]';%原坐标系下的Y轴
Ix_a=[1 0 0]';%原坐标系下的X轴
for rx=0:5:60Rx=deg2rad(rx);%坐标系绕X轴旋转的转换矩阵TxTx=[1        0        0;0  cos(Rx)  sin(Rx);0 -sin(Rx)  cos(Rx)];%坐标系绕Y轴旋转的转换矩阵TyTy=[cos(Rx) 0 -sin(Rx);0        1         0;0 sin(Rx)  cos(Rx)];%坐标系绕Z轴旋转的转换矩阵TzTz=[ cos(Rx) sin(Rx) 0;-sin(Rx) cos(Rx) 0;0         0        1]; Iz_b=Tx*Ty*Tz*Iz_a;%绕ZYX轴旋转后新坐标系下的Z轴Iy_b=Tx*Ty*Tz*Iy_a;%绕ZYX轴旋转后新坐标系下的Y轴Ix_b=Tx*Ty*Tz*Ix_a;%绕ZYX轴旋转后新坐标系下的X轴for t=-10:0.1:10plot3(t*Iz_b(1),t*Iz_b(2),t*Iz_b(3),'r');%绘制Z轴plot3(t*Iy_b(1),t*Iy_b(2),t*Iy_b(3),'b');%绘制Y轴plot3(t*Ix_b(1),t*Ix_b(2),t*Ix_b(3),'g');%绘制X轴hold on;endhold off;pause(0.1);
end
%************************************************
%******动画演示坐标系分别绕Z-Y-X轴旋转过程**********
%************************************************
clear all;
Iz_a=[0 0 1]';%原坐标系下的Z轴
Iy_a=[0 1 0]';%原坐标系下的Y轴
Ix_a=[1 0 0]';%原坐标系下的X轴
%坐标系先绕Z轴旋转
for rx=0:5:60Rx=deg2rad(rx);%坐标系绕Z轴旋转的转换矩阵TzTz=[ cos(Rx) sin(Rx) 0;-sin(Rx) cos(Rx) 0;0         0        1]; Iz_b=Tz*Iz_a;%绕Z轴旋转后新坐标系下的Z轴Iy_b=Tz*Iy_a;%绕Z轴旋转后新坐标系下的Y轴Ix_b=Tz*Ix_a;%绕Z轴旋转后新坐标系下的X轴for t=-10:0.1:10plot3(t*Iz_b(1),t*Iz_b(2),t*Iz_b(3),'r');%绘制Z轴plot3(t*Iy_b(1),t*Iy_b(2),t*Iy_b(3),'b');%绘制Y轴plot3(t*Ix_b(1),t*Ix_b(2),t*Ix_b(3),'g');%绘制X轴hold on;endpause(0.1);hold off;
end
%坐标系再绕Y轴旋转
for rx=0:5:60Rx=deg2rad(rx);%坐标系绕Y轴旋转的转换矩阵TyTy=[cos(Rx) 0 -sin(Rx);0        1         0;0 sin(Rx)  cos(Rx)];Iz_c=Ty*Iz_b;%绕Z轴旋转后新坐标系下的Z轴Iy_c=Ty*Iy_b;%绕Z轴旋转后新坐标系下的Y轴Ix_c=Ty*Ix_b;%绕Z轴旋转后新坐标系下的X轴for t=-10:0.1:10plot3(t*Iz_c(1),t*Iz_c(2),t*Iz_c(3),'r');%绘制Z轴plot3(t*Iy_c(1),t*Iy_c(2),t*Iy_c(3),'b');%绘制Y轴plot3(t*Ix_c(1),t*Ix_c(2),t*Ix_c(3),'g');%绘制X轴hold on;endpause(0.1);hold off;
end
%最后坐标系绕X轴旋转
for rx=0:5:60Rx=deg2rad(rx);%坐标系绕X轴旋转的转换矩阵TxTx=[1        0        0;0  cos(Rx)  sin(Rx);0 -sin(Rx)  cos(Rx)];Iz_d=Tx*Iz_c;%绕Z轴旋转后新坐标系下的Z轴Iy_d=Tx*Iy_c;%绕Z轴旋转后新坐标系下的Y轴Ix_d=Tx*Ix_c;%绕Z轴旋转后新坐标系下的X轴for t=-10:0.1:10plot3(t*Iz_d(1),t*Iz_d(2),t*Iz_d(3),'r');%绘制Z轴plot3(t*Iy_d(1),t*Iy_d(2),t*Iy_d(3),'b');%绘制Y轴plot3(t*Ix_d(1),t*Ix_d(2),t*Ix_d(3),'g');%绘制X轴hold on;endpause(0.1);hold off;
end
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值