Java中是否有像Rectangle类这样的circle类

2022-01-14 00:00:00 geometry rectangles java

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

解决方案

有一个类叫Ellipse2D 在您可以使用的 java.awt.geom 包中,因为它有一些看起来像您的方法重新寻找.宽度等于高度的椭圆是圆.

contains 的其中一个重载允许您测试圆点碰撞:

<块引用>

boolean contains(double x, double y)

测试指定的坐标是否在边界内Shape,正如内在定义所描述的那样.

另一个名为 intersects 的函数允许您测试圆与矩形的碰撞:

<块引用>

boolean intersects(double x, double y, double w, double h)

测试 Shape 的内部是否与指定矩形区域的内部相交.

注意 Ellipse2D 是一个抽象类;您可以使用其中一个嵌套子类 Ellipse2D.DoubleEllipse2D.Float,唯一的区别是用于存储维度的数据类型.

Hey I was writing a quick program and something came across where I need to use a circle for collision detection. But as far as I know, there is only the Rectangle class that has the .intersects(Point p) method. Is there anything like a circle that I could use the same way?

解决方案

There is a class called Ellipse2D in the java.awt.geom package that you can use, since it has some methods that appears to be what you're looking for. An ellipse with a width equal to its height is a circle.

One of the overloads for contains allows you to test for circle-point collisions:

boolean contains(double x, double y) 

Tests if the specified coordinates are inside the boundary of the Shape, as described by the definition of insideness.

Another function called intersects allows you to test for circle-rectangle collisions:

boolean intersects(double x, double y, double w, double h)

Tests if the interior of the Shape intersects the interior of a specified rectangular area.

Note that Ellipse2D is an abstract class; you would use one of its nested subclasses Ellipse2D.Double or Ellipse2D.Float, the only difference being the data type used to store the dimensions.

相关文章