2016-05-05 94 views
0

我需要編程一個點移向另一點。我有這個點的初始座標,然而它必須移動到的點是隨機選擇的。例如點的起始點可能是我[0 0],它將不得不前往[100,325]或[198, -243。點可以產生的網格約束500和-500(正方形)。Matlab - 使一點向另一點移動

使用

目前生成點,

dots = plot(XY(:,1), XY(:,2), ... 
     'Marker', '.', ... 
     'Color', 'b', ... 
     'LineStyle', 'none', ... 
     'MarkerSize', 6); 

,並給他們的XY座標(小起步區範圍內隨機開始)。在這種情況下,numberDots = 1(必須稍後添加)。 baseRadius = 50

angle = rand(numberUAVs, 1) * 2*pi; 
r = baseRadius * sqrt(rand(numberDots, 1)); 
XY = [r .* cos(angle(:)) + 0, ... 
     r .* sin(angle(:)) + 0] 

這就是我現在試圖讓他們通過簡單地將1添加到座標和繪圖。

for i = 1:1000000 
    XY = XY + 1; 
    pause(0.1) 
    set(dots, 'XData', XY(:,1), 'YData', XY(:,2)); 
end 

如何使點移動到隨機定義的點。由於

回答

0

添加1你每次循環時間將只工作,如果你的新點是總是到您當前點具有相同x,並從開始點Y距離右上角的x/y座標。

取而代之,您可以簡單地使用linspace獲取開始和結束之間的線性間隔x值,以及類似的值爲y值。

%// Number of "steps" you want to take to get from the start point to the end point 
nSteps = 100; 

%// Figure out all intermediate x/y values between the two 
xx = linspace(x_start, x_end, nSteps); 
yy = linspace(y_start, y_end, nSteps); 

%// Create the initial plot 
plt = plot(NaN, NaN, 'bo'); 

%// Then plot the point's path 
for k = 1:nSteps 
    set(plt, 'XData', xx(k), 'YData', yy(k)) 
    drawnow; 
end 
相關問題