Почему мой код не обнаруживает пересечение круга и прямоугольника?
public static boolean RectCircleColliding(Circle circle, Rectangle rect)
{
double distX = Math.abs(circle.getCenterX() - rect.getX() - rect.getWidth()/2);
double distY = Math.abs(circle.getCenterY() - rect.getY() - rect.getHeight()/2);
if (distX > rect.getWidth()/2 + circle.getRadius())
return false;
if (distY > rect.getHeight()/2 + circle.getRadius())
return false;
if (distX <= rect.getWidth()/2)
return true;
if (distY <= rect.getHeight()/2)
return true;
double dx = distX - rect.getWidth()/2;
double dy = distY - rect.getHeight()/2;
return dx*dx + dy*dy <= (circle.getRadius()*circle.getRadius());
}
Я использую следующие координаты окружности и прямоугольника:
Rectangle bounds = new Rectangle(7, 12, 2, 6);
Circle ball = new Circle(5, 7, 4.123);