Java 碰撞检测的替代方案?

Java 碰撞检测的替代方案?,java,graphics,collision-detection,2d-games,Java,Graphics,Collision Detection,2d Games,我需要检查区域a和区域b之间的冲突: Area a = new Area(new Ellipse2D.Float(100, 100, 70, 70)); Area b = new Area(new Polygon(x,y,n)); 其中x和y是存储多边形坐标的数组。我试过: boolean checkCollision() { a.intersect(b); return !a.isEmpty(); } 最后,我编写了这个方法,看看它是否有效: public String t

我需要检查区域
a
和区域
b
之间的冲突:

Area a = new Area(new Ellipse2D.Float(100, 100, 70, 70));
Area b = new Area(new Polygon(x,y,n));
其中
x
y
是存储多边形坐标的数组。我试过:

boolean checkCollision()
{
    a.intersect(b);
    return !a.isEmpty();
}
最后,我编写了这个方法,看看它是否有效:

public String toString()
{
    if(checkCollision())
        return "TOUCH";
    else
        return "NO TOUCH";
}
这种方法似乎不起作用:当我触摸多边形的顶点时,它不会检测到碰撞

在第三张图片中,您可以看到,只有当我距离它们不碰撞的区域“足够远”(这些图片中的多边形是白色的)时,才可以看到。相反,如果它们在附近,碰撞不是很精确,它似乎不起作用


这种方法正确吗?有什么建议吗?备选方案?

请发布复制此方案所需的实际代码。我认为这就足够了。。在这之后,我画它,我移动球,但这在碰撞中并不重要。。无论你想要更多,我都会添加更多。这不是有效的代码。我们无法检查问题是否在您实现它的方式中(我的第一个猜测),或者碰撞检测中是否存在实际问题。如果我错了,请纠正我。但是从第一次研究来看,您的intersects调用没有任何意义:给定,intersects仅使用
Rectangle2D
作为单个参数定义。这些图片让我感到困惑。在图2中,球完全在黑色区域上并且相交,而在图3中,球也完全在黑色区域上并且不相交。图片3中的屏幕截图下方是否有边框,或者您希望用每张图片描述什么场景?