我必须创建一个模拟真空吸尘器机器人的程序。我们必须用Octave来做。在Octave/Matlab中旋转移动的二维绘图
Main()
clear all;
%Initalisierung der Raummatrix, damit nachher abgefragt werden kann
XMatrix = 0;
YMatrix = 0;
%"Winkel festsetzten"
t=1;
h=1;
hold on
%Startpunkte vom Punkt
x = 20;
y = 15;
alpha = 45;
xalt= 10;
yalt= 10;
%Hier die Methode ändern um verschiedene Räume einzulesen
[XMatrix,YMatrix] = RaummitsechsEcken();
%plot Funktion wird gespeichert
p = plot(x,y,'*');
%p1 = plot(x,y,xalt,yalt);
while(true)
pause(0.001)
%alte Position speichern
xalt = get(p,'XData');
yalt = get(p,'YData');
%Bewegungsberechnung
set(p,'YData',get(p,'YData')+0.1*t);
set(p,'XData',get(p,'XData')+0.1*h);
% Strich plot
%Kollisionabfrage
if(inpolygon(get(p,'XData'),get(p,'YData'),XMatrix,YMatrix) == false)
%Alte Position zurückspielen
set(p,'XData',xalt);
set(p,'YData',yalt);
%Neue Winkelberechnung(random)
t = -1+rand(1)*(1-(-1));
h = -1+rand(1)*(1-(-1));
endif
endwhile
endfunction
function[X,Y] = RaummitsechsEcken()
X = [10 18 10 30 22 30 10];
Y = [1 16 30 30 16 1 1];
plot(X,Y)
hold on
endfunction
与代码的问题是当“机器人”打在墙上,他是随机生成一个新的天使,现在以这种方式移动。问题在于机器人具有相同的角度和速度变量。所以速度随角度而变化。现在我的问题是,如果有人知道如何以相同的速度移动我的观点,但改变方向与机器人击中墙壁时的速度不同。我已经寻找了一个旋转矩阵,但是我无法使它与它一起工作。 我希望你能帮助!
Felix
使用两个变量? – Suever
或正常化't'和'h'。 – beaker