Я пытаюсь написать метод, который будет вычислять, если два круга перекрываются. Я придумал следующее, и мне просто интересно узнать, есть ли в любом случае его можно оптимизировать дальше.Быстрое обнаружение столкновения круга
private static boolean isCollision(Point2D p1, float r1, Point2D p2, float r2)
{
float a,dx, dy;
a = (r1+r2) * (r1+r2);
dx = (float) (p1.getX() - p2.getX());
dy = (float) (p1.getY() - p2.getY());
if (a > (dx*dx) + (dy*dy))
{
return true;
}
return false;
}
Я не думаю, что любое из решений обеспечит адекватный результат, когда расстояние между двумя центрами меньше единицы, но больше нуля. – 2009-12-08 22:05:39