在Java中是否有类似Rectangle类的圆类

时间:2012-12-02 22:05:28

标签: java geometry rectangles

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

3 个答案:

答案 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.DoubleEllipse2D.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