我有一个程序可以让你移动各种形状。如果两个形状相交,我希望能够返回一个返回 true 的布尔值。这是我迄今为止所拥有的:
public boolean overlaps(MyShape s){
Rectangle2D.Double otherShapeBoundary
= new Rectangle2D.Double(s.getX(), s.getY(), s.getWidth(), s.getHeight());
PathIterator pi = path.getPathIterator(null);
return path.intersects(pi,otherShapeBoundary);
}
...其中 path 是 GeneralPath(这些都直接来自 API,MyShape 除外)。
我不确定的一件事是 PathIterator 如何工作,这可能是问题所在。我也试过这个,但我遇到了类似的错误:
public boolean overlaps(OverlappableSceneShape s){
Rectangle2D.Double otherShapeBoundary
= new Rectangle2D.Double(s.getX(), s.getY(), s.getWidth(), s.getHeight());
return path.intersects(otherShapeBoundary);
}
错误是此方法几乎总是返回 false。我不确定它何时/为什么返回真实,但这种情况很少见。