我对如何检测这里的碰撞有一点了解我们只使用数据向量而没有类(我知道类已经实现但我不允许使用它们)。
那么,我怎么做呢?互联网上有一些例子,但他们只看两个圈子。我有一个用户定义的圆圈(球)。那么我需要确定哪些距离最近,如果是,如何?我对如何从此开始感到困惑。
到目前为止,我可以在屏幕上的随机位置创建一定数量的圆圈,并使它们朝同一方向移动(这很好)。所有球的半径相同,速度相同。
以下是代码的主要部分:
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
这是一团糟,但是,我在这里迷路了......
答案 0 :(得分:0)
如果您需要确定最近的一对:well-known problem of computational geometry
如果您需要查找距离低于某个限制的所有对,那么您需要一些空间分区数据结构,例如kd-tree