2014-11-02 88 views
0

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

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

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

以来,由于浮点算术的不确切的性质,你的方法可能永远不会返回true

我会玩SOME_SMALL_NUMBER的价值来看看什么给你体面的结果。