【问题标题】:moving a train of points (cars)移动一列点(汽车)
【发布时间】:2016-06-21 23:56:03
【问题描述】:

我们正在尝试使用不同颜色和大小的点来模拟移动的汽车(汽车类型 1:红色尺寸 20,汽车类型 2:绿色尺寸 40 等等),问题是如果有两辆相同类型的汽车,他们在它们应该互相跟随的地方重叠,这是使用的代码:

x = linspace(0,30,1000);
axis([0,20,-0.4,1.5]);
ax = gca;
h = hgtransform('Parent',ax);
type1=plot(-1,0.4,'s','Parent',h,'MarkerFaceColor','red','MarkerSize',20);
type2=plot(-1,0.4,'s','Parent',h,'MarkerFaceColor','green','MarkerSize',40);
car=[1 2 2 1 1];
for k = 1:10:700
    for i = 1:length(car)
       if(car(i)==1)
           set(type1,'XData',x(k),'YData',0.4);
           pause(0.1);
       elseif(car(i)==2)
           set(type2,'XData',x(k)-3,'YData',0.4);
           pause(0.1);
       end
    end
end

如何保持每 (x=3) 辆新车开始行驶的顺序,而不删除或重叠前面的汽车。

谢谢你

【问题讨论】:

    标签: matlab simulation point


    【解决方案1】:

    您可能需要以下代码。

    x = linspace(0,30,1000);
    axis([0,20,-0.4,1.5]);
    ax = gca;
    car=[1 2 2 1 1];
    h = hgtransform('Parent',ax);
    Ncar=length(car);
    
    for n=1:Ncar %generate 5 cars having one type among type1 and type2
        if car(n)==1;
           types(n)=plot(-1,0.4,'s','Parent',h,'MarkerFaceColor','red','MarkerSize',20);
        else
           types(n)=plot(-1,0.4,'s','Parent',h,'MarkerFaceColor','green','MarkerSize',40);
        end
    end
    
    for k = 1:10:700 %plotting the cars sequencially
        for i = 1:length(car)  
               set(types(i),'XData',x(k)-3*(i-1),'YData',0.4);
           pause(0.1);
        end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多