Java中是否有一个类似于Rectangle类的圆形类?

14

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


1
你可以使用Eclipse2D,它具有contains(x, y)方法。 - FThompson
1
是的,我前几天也在想,Oracle没有在标准库中包含一个十二面体类,这对我们所有人都是一种伤害 :-) - paxdiablo
3个回答

18

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) - FThompson

1

将您的链接重定向到Java 7 API,我会给您点赞(Java 1.4 已经快10年了 :P) - MadProgrammer

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、Polygon、QuadCurve2D、QuadCurve2D.Double、QuadCurve2D.Float、Rectangle、Rectangle2D、Rectangle2D.Double、Rectangle2D.Float、RectangularShape、RoundRectangle2D、RoundRectangle2D.Double、RoundRectangle2D.Float


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接