【发布时间】:2017-11-09 10:04:25
【问题描述】:
所以,我是 Simulink 的新手,并且具备基本的 Matlab 技能。我正在尝试使用投影仪(作为第二台显示器连接)在地板上绘制障碍物。 无论如何,我想一直在同一个数字上绘图,但我遇到了问题。有时图形在开始模拟时打开,有时则不打开。我不能为我的生活,找出原因。
情节的基本思想是情节和障碍物在地板上以与跑步机移动相同的速度向用户移动,以使其感觉就像它真的在地板上。我已经删除了图中的所有元素,只显示一个红色条作为障碍物和黑色背景。
function plot_fcn(x)
persistent f
projectionArea=3; %3m - arbitrary, will change later
barLength=0.35; %0.35m - arbitrary, will change later
no_contact=true; % contact indicator
treadmillSpeed=10/9; %4km/h = 10/9 m/s
refreshRate= 100; % 100Hz
obstacleIncrement=treadmillSpeed/refreshRate; % eye noticeable increment
if isempty(f)
target=1;
beforeBar=1;
p=[10;901;1680;1027.5];
f = figure;
set(f, 'MenuBar', 'none', 'ToolBar', 'none', 'Color','black');
set(0, 'DefaultFigurePosition', p);
% target=x;
while (no_contact)
afterBar=projectionArea-barLength-beforeBar;
Y = [beforeBar, barLength, afterBar;
beforeBar, barLength, afterBar;
beforeBar, barLength, afterBar];
f=area(Y);
set(f,'EdgeColor','red');
f(1).FaceColor = [0 0 0];
f(2).FaceColor = [1 0 0];
f(3).FaceColor = [0 0 0];
if beforeBar>=projectionArea-(target+barLength/2)
no_contact=false
else
beforeBar=beforeBar+treadmillSpeed*obstacleIncrement;
pause(obstacleIncrement)
end
end
end
end
【问题讨论】: