Ich habe ein bisschen ein Stumpf auf, wie man Kollisionen von hier erkennen wir verwenden nur Vektoren von Daten und keine Klassen (Ich weiß Klassen wurden implementiert, aber ich darf nicht verwenden Sie).Algorithmus für mehrere Kreis-Kreis-Kollisionen
Also, wie mache ich das überhaupt? Es gibt einige Beispiele im Internet, aber sie betrachten nur zwei Kreise. Ich habe eine benutzerdefinierte Anzahl von Kreisen (Kugeln). Also muss ich bestimmen, welche die nächste Entfernung sind, und wenn ja wie? Ich bin so verwirrt darüber, wie ich damit anfangen soll.
Bis jetzt kann ich eine bestimmte Anzahl von Kreisen in zufälliger Position auf dem Bildschirm erstellen und sie in die gleiche Richtung bewegen (das ist in Ordnung). Alle Bälle haben den gleichen Radius und die gleiche Geschwindigkeit.
Hier ist der größte Teil des Codes:
N_balls = input('Enter the amount of balls: ');
radius = input('Enter radius for all balls: ');
for i = 1:N_balls
x_init(i) = randi([27, 550]);
y_init(i) = randi([27, 400]);
end
for i = 1:N_balls
ball(i) = drawBall(x_init(i), y_init(i), radius, 'r');
end
% Initialize a loop control variable
exit_loop = false;
x = [];
y = [];
velocity_x = 1;
velocity_y = 1;
distance = [];
% While is not commanded to exit the loop
while exit_loop == false
for i = 1:N_balls
[x(i), y(i)] = getCenter(ball(i));
xMove(ball(i), velocity_x);
yMove(ball(i), velocity_y);
redraw;
end
for i = 2:N_balls
distance(i-1) = sqrt(((x(i-1) - x(i)) * (x(i-1) - x(i))) + ( (y(i-1) - y(i)) * (y(i-1) - y(i))));
end
[dist, ball_num] = min(distance);
end
Es ist ein Chaos ist, aber ja, ich bin hier verloren ...