Существует ли класс окружения на Java, например класс Rectangle
Эй, я писал быструю программу, и кое-что натолкнулось на то, где мне нужно использовать круг для обнаружения столкновений. Но, насколько мне известно, существует только класс Rectangle, который имеет метод .intersects(Point p). Есть ли что-то вроде круга, который я мог бы использовать таким же образом?
Ответы
Ответ 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
, с той лишь разницей, что это тип данных, используемый для хранения измерений.
Ответ 2
Существует эллипс2D, это точно так же, как квадрат представляет собой прямоугольник, окружность которого является эллипсом.
http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Ellipse2D.html
Ответ 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