2014-11-02 5 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, чтобы увидеть, что дает вам достойные результаты.

Смежные вопросы