14

嘿,我正在编写一个快速程序,遇到了一些需要使用圆圈进行碰撞检测的地方。但据我所知,只有 Rectangle 类具有 .intersects(Point p) 方法。有没有类似圆圈的东西我可以用同样的方式?

4

3 回答 3

18

您可以使用包中调用的类Ellipse2Djava.awt.geom因为它有一些似乎是您正在寻找的方法。宽度等于高度的椭圆是圆。

重载之一contains允许您测试圆点碰撞:

boolean contains(double x, double y) 

测试指定的坐标是否在 的边界内 Shape,如 insideness 的定义所述。

另一个调用的函数intersects允许您测试圆矩形碰撞:

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

测试内部是否与Shape指定矩形区域的内部相交。

注意这Ellipse2D是一个抽象类;您将使用其中一个嵌套子类Ellipse2D.DoubleEllipse2D.Float,唯一的区别是用于存储维度的数据类型。

于 2012-12-02T22:08:49.810 回答
1

有一个 ellipse2D,这就像正方形是矩形,圆形是椭圆一样。

http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Ellipse2D.html

于 2012-12-02T22:08:31.253 回答
1

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, 多边形, QuadCurve2D, QuadCurve2D.Double, QuadCurve2D.Float, Rectangle, Rectangle2D, Rectangle2D.Double, Rectangle2D.Float, RectangularShape, RoundRectangle2D, RoundRectangle2D.Double, RoundRectangle2D.Float

于 2012-12-02T22:08:35.957 回答