如何检查球和线之间的碰撞

时间:2014-11-02 11:41:29

标签: java collision

我想检查球和特定线(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;
}

1 个答案:

答案 0 :(得分:0)

假设数学没有问题,我将最后一行改为

return Math.abs(yf - this.y) < SOME_SMALL_CONSTANT;

因为,鉴于浮点算术的不精确性,你的方法可能永远不会返回true

我会使用SOME_SMALL_NUMBER的值来看看是什么给你带来不错的结果。