所以我正在尝试在android上制作我的第一款游戏。问题是我有一个小的移动球,我希望它从我画的线反弹。为此,我需要确定球的 x,y 是否也是线中一个点的坐标。
我试图实现这些关于线条的方程
x=a1 + t*u1
y=a2 + t*u2 => (x-a1)/u1=(y-a2)/u2 (t=t 如果点在线,则必须为)
其中 x 和 y 是我正在测试的坐标,dot[a1,a2] 是线上的一个点,u(u1,u2) 是线的向量。
继承人的代码:
public boolean Collided()
{
float u1 =Math.abs(Math.round(begin_X)-Math.round(end_X));
float u2 =Math.abs(Math.round(begin_Y)-Math.round(end_Y));
float t_x =Math.round((elect_X - begin_X)/u1);
float t_y =Math.round((elect_Y - begin_Y)/u2);
if(t_x==t_y)
{
return true;
}
else
{
return false;
}
}
点 [begin_X,end_X] 和 [begin_Y,end_Y] 是直线的两个点,[elect_X,elect_Y] 是球的坐标
理论上它应该有效,但实际上球大部分时间只是直接穿过线或弹到其他不应该的地方