2014-11-02 57 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的價值來看看什麼給你體面的結果。