MATLAB坐标系变换动画gif(附代码):坐标系旋转动画+坐标系平移动画代码

 MATLAB坐标系变换动画gif(附代码)

以之前的文章中的例题为例,绘制一个向量和一个运动坐标系在空间中的变换过程,并生成gif动画。

        已知坐标系{B}的初始位姿与{A}重合,首先{B}相对于{A}的Z轴旋转30°,再沿着{A}的X轴移动1个单位,沿着{A}的Z轴移动1个单位。设初始向量P在{B}中的坐标系位置为[3,7,0]^T,绘制其运动轨迹动画?

clear;clc;
close all;

%绘制向量P在空间中的变换
PB=[3 7 0];
theta=0:pi/100:pi/6;
P0=[1 0 1];
for k=1:length(theta)
%绘制初始坐标系
    plot3([0,2],[0,0],[0,0],'g','LineWidth',2);%绘制x轴,两个单位长度
    hold on;
    plot3([0,0],[0,2],[0,0],'g','LineWidth',2);%绘制y轴,两个单位长度
    plot3([0,0],[0,0],[0,2],'b','LineWidth',2);%绘制z轴,两个单位长度
    R=[cos(theta(k)) -sin(theta(k)) 0;
    sin(theta(k)) cos(theta(k)) 0;
    0 0 1];
    P0V=P0'*(k/length(theta));
    PA=R*PB'+P0V;
    x=PA(1);
    y=PA(2);
    z=PA(3);
    plot3([P0V(1),PA(1)],[P0V(2),PA(2)],[P0V(3),PA(3)],'-','LineWidth',0.5);
    %绘制坐标之间的相对运动
    %纯转动后的xyz轴
    plot3([R(1,1)+P0V(1),P0V(1)],[R(2,1)+P0V(2),P0V(2)],[R(3,1)+P0V(3),P0V(3)],'-','color','r');%绘制x轴
    plot3([R(1,2)+P0V(1),P0V(1)],[R(2,2)+P0V(2),P0V(2)],[R(3,2)+P0V(3),P0V(3)],'-','color','r');%绘制y轴
	plot3([R(1,3)+P0V(1),P0V(1)],[R(2,3)+P0V(2),P0V(2)],[R(3,3)+P0V(3),P0V(3)],'-','color','r');%绘制z轴
    hold off;%是否保留运动轨迹
    %生成gif动画
    im = frame2im(getframe(gcf));    
    [I, map] = rgb2ind(im,20);
    if (k==1)
    imwrite(I,map,'MyGif2.gif','gif','Loopcount',inf,'DelayTime',0.1);
    else
        imwrite(I,map,'MyGif2.gif','gif','WriteMode','append','DelayTime',0.1);
    end
end

        

  • 9
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值