我想检查球和特定线(zijde)是否发生碰撞。我想通过制作线的线函数来做到这一点。然后检查从函数出来的坐标是否等于球的坐标。这是我到目前为止使用的代码,我不知道我做错了什么。 Zijde z是球需要碰撞的线,并具有getStartPoint(getStartPunt)和getEndPoint(getEindpunt)函数。
public Boolean CheckCollision(Zijde z)
{
/**
* y = ax + b
* a = delta y / delta x
* b = y - ax
*/
double deltay = z.getEindpunt().getY() - z.getStartPunt().getY();
double deltax = z.getEindpunt().getX() - z.getStartPunt().getX();
double a = deltay / deltax;
double b = z.getEindpunt().getY() - a * z.getEindpunt().getX();
double yf = a * this.x + b;
return yf == this.y;
}
答案 0 :(得分:0)
假设数学没有问题,我将最后一行改为
return Math.abs(yf - this.y) < SOME_SMALL_CONSTANT;
因为,鉴于浮点算术的不精确性,你的方法可能永远不会返回true
。
我会使用SOME_SMALL_NUMBER
的值来看看是什么给你带来不错的结果。