Java圆 - 圆碰撞检测

Con*_*uhl 3 java collision-detection

这是圆圈类:

public class Circle {
    private double radius;

    private double x;
    private double y;
}
Run Code Online (Sandbox Code Playgroud)

如何判断此类(圆圈)中的两个对象是否发生碰撞?

PS你能使用避免取平方根的方法吗?

Hot*_*cks 8

double xDif = x1 - x2;
double yDif = y1 - y2;
double distanceSquared = xDif * xDif + yDif * yDif;
boolean collision = distanceSquared < (radius1 + radius2) * (radius1 + radius2);
Run Code Online (Sandbox Code Playgroud)

  • 如果x,y,radius有近似误差(使用浮点数时通常就是这种情况),那么最好使用epsilon进行浮点比较...... (2认同)