新闻  |   论坛  |   博客  |   在线研讨会
MATLAB仿真飞旋的自行陈
mayer | 2009-06-13 13:44:45    阅读:1492   发布文章

MATLAB仿真飞旋的自行陈

 程序如下:
  clear
  speed = 10;
  t = 0;
  Y_a = 4;Y_b = 4;Y_c =4;Yd=4;
  r = 2;
  w = 9;
  sita1=0;%设置开始它们都在水平线上
  pausetime=.002;
  set(gcf,'doublebuffer','on');%消除抖动
  axis equal;axis off;%建立坐标系
  axis([-5 20 -9 9])
  title('自行车','fontsize',15);%标题
  hold on
  a =[0:.01:2*pi]; %角度
  plot(cos(a)*4,sin(a)*4,'color','k','marker','.','markersize',7);%画第一个轮胎
  plot(15+cos(a)*4,sin(a)*4,'color','k','marker','.','markersize',7);%画第2个轮胎
  plot(0,0,'color','m','marker','.','markersize',70);%画出第一个轴
  plot(8,0,'color','m','marker','.','markersize',70);%画第2个轴
  plot(8+r*cos(a),r*sin(a),'color','w','marker','.','markersize',4);%画轨道
  a1=line([0;8],[0.7;0.7],'color','m','linewidth',3);%设置链条
  a2=line([0;8],[-0.7;-0.7],'color','m','linestyle','-','linewidth',3);%设置链条
  p1=plot(8+r*cos(sita1),r*sin(sita1),'color','k','marker','.','markersize',40);%画踏板初始位置
  p2=plot(8+r*cos(sita1+pi),r*sin(sita1+pi),'color','k','marker','.','markersize',40);%画踏板初始位置
  a3 = line([0 8+r*cos(sita1)],[0 r*sin (sita1+pi)],'EraseMode','xor','Color','k','linestyle','-','linewidth',3);%画出踏板与车的连接轴
  a4 = line([0 8+r*cos(sita1+pi)],[0 r*sin(sita1)],'EraseMode','xor','Color','k','linestyle','-','linewidth',3);%画出连接轴
  line([0;4],[0;5],'color','k','linewidth',3);%设置杆子
  line([4;13.2],[5;5],'color','k','linewidth',3);%设置杆子
  line([0;13.2],[0;5],'color','k','linewidth',3);%设置杆子
  line([4;4],[5;6],'color','k','linewidth',3);%设置杆子
  line([3;5],[6;6],'color','k','linewidth',3);%设置座位
  line([15;12],[0;8],'color','k','linewidth',3);%设置杆子
  line([10;12],[7;7.9],'color','k','linewidth',3);%设置杆子
  ax = Y_a * cos(2 * pi * t);ay = Y_a * sin(2 * pi * t);   %计算初始4内支柱的横坐标和纵坐标
  bx = Y_b * cos(2 * pi  * t - pi/2);by = Y_b * sin(2 * pi * t - pi/2);
  cx = Y_c * cos(2 * pi  * t + pi/2);cy = Y_c * sin(2 * pi  * t + pi/2);
  dx = Yd * cos(2 * pi * t + pi); dy = Yd * sin(2 * pi*t + pi);
     a = line([0 ax],[0 ay],'EraseMode','xor','Color','r','linestyle','-','linewidth',1);   %画出4个支柱
  b = line([0 bx],[0 by],'EraseMode','xor','Color','b','linestyle','-','linewidth',1);
  c = line([0 cx],[0 cy],'EraseMode','xor','Color','g','linestyle','-','linewidth',1);
  d = line([0 dx],[0 dy],'EraseMode','xor','Color','k','linestyle','-','linewidth',1);  
  a1 = line([15 15+ax],[0 ay],'EraseMode','xor','Color','r','linestyle','-','linewidth',1);  %画出4个支柱
  b1 = line([15 15+bx],[0 by],'EraseMode','xor','Color','b','linestyle','-','linewidth',1);
  c1 = line([15 15+cx],[0 cy],'EraseMode','xor','Color','g','linestyle','-','linewidth',1);
  d1 = line([15 15+dx],[0 dy],'EraseMode','xor','Color','k','linestyle','-','linewidth',1);   
  while 1    %让轮胎转起来的循环
     t = t + 1/speed;
     ax = Y_a * cos(2 * pi * t);ay = Y_a * sin(2 * pi * t);  
     bx = Y_b * cos(2 * pi  * t - pi/2);by = Y_b * sin(2 * pi * t - pi/2);
     cx = Y_c * cos(2 * pi  * t + pi/2);cy = Y_c * sin(2 * pi  * t + pi/2);
     dx = Yd * cos(2 * pi * t + pi); dy = Yd * sin(2 * pi*t + pi);
     set(p1,'Xdata',8+r*cos(sita1),'Ydata',r*sin(sita1+pi));%设置踏板的运动过程
     set(p2,'Xdata',8+r*cos(sita1+pi),'Ydata',r*sin(sita1));
     sita1=sita1+w*pausetime;%踏板相对轴转过的角度
     pause(pausetime);
     drawnow;
     set(a,'XData',[0 ax],'YData',[0 ay]);%第一个轮胎的运动
     set(b,'XData',[0 bx],'YData',[0 by]);
     set(c,'XData',[0 cx],'YData',[0 cy]);
     set(d,'XData',[0 dx],'YData',[0 dy]);
     set(a1,'XData',[15 15+ax],'YData',[0 ay]);%第2个轮胎的运动
     set(b1,'XData',[15 15+bx],'YData',[0 by]);
     set(c1,'XData',[15 15+cx],'YData',[0 cy]);
     set(d1,'XData',[15 15+dx],'YData',[0 dy]);
     set(a3,'XData',[8 8+r*cos(sita1)],'YData',[0 r*sin(sita1+pi)]);%踏板的运动
     set(a4,'XData',[8 8+r*cos(sita1+pi)],'YData',[0 r*sin(sita1)]);
     end

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客