【问题标题】:Is there a circle class in Java like the Rectangle classJava中是否有像Rectangle类这样的circle类
【发布时间】:2012-12-02 22:05:28
【问题描述】:

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

【问题讨论】:

  • 你可以使用Eclipse2D,它有contains(x, y)
  • 是的,前几天我只是在想,Oracle 通过在标准库中不包含十二面体类对我们所有人造成了伤害 :-)

标签: java geometry rectangles


【解决方案1】:

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,但更合适的点相交方法是contains(double x, double y)
【解决方案2】:

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

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

【讨论】:

  • 将你的链接重定向到 Java 7 API 添加我会投票给你(Java 1.4 已经快 10 年了:P)
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 2020-02-17
    • 2019-06-26
    • 2011-10-28
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多