Подтвердить что ты не робот

Существует ли класс окружения на Java, например класс Rectangle

Эй, я писал быструю программу, и кое-что натолкнулось на то, где мне нужно использовать круг для обнаружения столкновений. Но, насколько мне известно, существует только класс Rectangle, который имеет метод .intersects(Point p). Есть ли что-то вроде круга, который я мог бы использовать таким же образом?

4b9b3361

Ответ 1

Существует класс Ellipse2D в пакете java.awt.geom, который вы можете использовать, так как он имеет некоторые методы, которые выглядят как то, что вы ищете для. Эллипсом с шириной, равной его высоте, является круг.

Одна из перегрузок для contains позволяет проверить наличие столкновений по окружности:

boolean contains(double x, double y) 

Проверяет, находятся ли указанные координаты внутри границы Shape, как описано в определении настойчивости.

Другая функция, называемая intersects, позволяет протестировать столкновение круг-прямоугольник:

boolean intersects(double x, double y, double w, double h)

Проверяет, пересекает ли внутренняя часть Shape внутренность заданной прямоугольной области.

Обратите внимание, что Ellipse2D - абстрактный класс; вы должны использовать один из своих вложенных подклассов Ellipse2D.Double или Ellipse2D.Float, с той лишь разницей, что это тип данных, используемый для хранения измерений.

Ответ 3

java.awt.Shape тоже и весь класс, который его реализует: Arc2D, Arc2D.Double, Arc2D.Float, Area, BasicTextUI.BasicCaret, CubicCurve2D, CubicCurve2D.Double, CubicCurve2D.Float, DefaultCaret, Ellipse2D, Ellipse2D.Double, Ellipse2D.Float, GeneralPath, Line2D, Line2D.Double, Line2D.Float, Path2D, Path2D.Double, Path2D.Float, Polygon, QuadCurve2D, QuadCurve2D.Double, QuadCurve2D.Float, Rectangle, Rectangle2D, Rectangle2D.Double, Rectangle2D.Float, RectangularShape, RoundRectangle2D, RoundRectangle2D.Double, RoundRectangle2D.Float