Есть ли класс 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