2013-06-16 13 views
6

様々なシンプルな形(多角形と楕円形)の組み合わせから2つのjava.awt.geom.Areaを作成した場合、2つの領域間の距離(すなわち最近接距離)を見つける方法がありますか?明確にするためにJavaの2つの図形/領域間の距離は?

:私は、あらゆる種類の形状の組合から作成されたそれぞれの任意の二つのエリアを、持っているとします

//Define the first area 
Area a = new Area(new Ellipse2D.Double(50, 50, 100, 100)); 
a.add(new Area(new Rectangle2D.Double(100, 100, 100, 100))); 

//Define the second area 
Area b = new Area(new Ellipse2D.Double(200, 300, 100, 100)); 
b.add(new Area(new Ellipse2D.Double(250, 250, 100, 100))); 

私が欲しいものは私に最短を表すダブルを与える方法getDistance(Area a, Area b)です領域aの任意の点と領域bの任意の点との間の距離。

Areas a and b, and the distance between them

これを行うにはそこに方法がある:ここで私が興味を持ってるの距離を示す青色のラインと上記二つの領域の画像ですか?そうでない場合は、どうすれば実装できますか?

答えて

3

これを正確に行う方法はないようです。ただし、PathIteratorを使用すると、図形のアウトラインに沿ってポイントツーポイントを比較し、手動で距離を見つけることができるはずです。

http://docs.oracle.com/javase/6/docs/api/java/awt/geom/PathIterator.html

This Wikipedia articleあなたが効率的に二次の明白な実装を避けるために、これを実装する方法について説明します。

+0

ありがとう! PathIteratorはこれまでの私の目的、特に平坦化されたパスのイテレータでうまく動作します。 – MarcTheSpark

関連する問題