嘿,我正在编写一个快速程序,有一些需要使用圆形进行碰撞检测的地方。但据我所知,只有 Rectangle
类具有 .intersects(Point p)
方法。是否有类似于圆形的东西可以以相同的方式使用?
嘿,我正在编写一个快速程序,有一些需要使用圆形进行碰撞检测的地方。但据我所知,只有 Rectangle
类具有 .intersects(Point p)
方法。是否有类似于圆形的东西可以以相同的方式使用?
在java.awt.geom
包中有一个名为Ellipse2D
的类可以使用,因为它具有一些似乎是您要寻找的方法。 宽度和高度相等的椭圆是一个圆。
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
,唯一的区别是用于存储尺寸的数据类型。
contains(double x, double y)
。 - FThompson有一个Ellipse2D,这与正方形是矩形、圆是椭圆的关系相同。
http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Ellipse2D.html
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
contains(x, y)
方法。 - FThompson