Есть ли класс circle в Java, как класс Rectangle
Эй, я писал быструю программу, и что-то наткнулось, где мне нужно использовать круг для обнаружения столкновений. Но, насколько я знаю, есть только класс Rectangle, который имеет .пересекает (точка p) метод. Есть ли что-то вроде круга, который я мог бы использовать таким же образом?
3 ответов
есть класс под названием 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
, единственным отличием является тип данных, используемый для хранения измерений.
существует ellipse2D, это так же, как квадрат-прямоугольник, круг-эллипс.
http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Ellipse2D.html
java.ОУ.Форма тоже. и весь класс, который его реализует: Arc2D, Arc2D.Двойной, Arc2D.Поплавок, Площадь, BasicTextUI.BasicCaret, CubicCurve2D, CubicCurve2D.Двойной, CubicCurve2D.Float, DefaultCaret,Ellipse2D, Ellipse2D.Двойной, Ellipse2D.Поплавок, GeneralPath, Line2D, Line2D.Двойной, Line2D.Поплавок, Path2d В, Path2d В.Двойной, Path2d В.Поплавок, Многоугольник, QuadCurve2D, QuadCurve2D.Двойной, QuadCurve2D.Поплавок, Прямоугольник, Rectangle2D, Rectangle2D.Двойной, Rectangle2D.Поплавок, RectangularShape, RoundRectangle2D, RoundRectangle2D.Двойной, RoundRectangle2D.Float