さまざまな形状を移動できるプログラムがあります。2 つの形状が交差している場合に 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 です (MyShape を除いて、これらはすべて API から直接取得されます)。
私が確信していないことの 1 つは、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 を返すことです。いつ/なぜ true が返されるのかはわかりませんが、非常にまれです。