嘿,我正在编写一个快速程序,遇到需要使用圆圈进行碰撞检测的地方。但据我所知,只有Rectangle类具有.intersects(Point p)方法。是否有类似圆圈的东西我可以用同样的方式?
答案 0 :(得分:17)
您可以使用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
之一,唯一的区别是用于存储维度的数据类型。
答案 1 :(得分:1)
有一个ellipse2D,这与方形是矩形的方式相同,圆形是椭圆形。
http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Ellipse2D.html
答案 2 :(得分:1)
java.awt.Shape too.以及实现它的所有类: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