2013-06-16 27 views
6

Eğer iki java.awt.geom.Area 'un çeşitli basit Şekiller (Çokgenler ve Elipsler) birleşiminden yapılmış olması durumunda, iki Alan arasındaki mesafeyi (yani en yakın mesafe) bulmak için bir yöntem var mıdır?mesafe?

netleştirmek için:

//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))); 

İstediğim en kısa temsil Bana bir duble veren bir yöntem getDistance(Area a, Area b): Ben herhangi bir tür şekillerin birliğinden oluşturulan her biri iki keyfi Alanları, olduğunu varsayalım a alanındaki herhangi bir nokta ile Alan b'deki herhangi bir nokta arasındaki mesafe.

Areas a and b, and the distance between them

bunu yapmak için orada bir yöntem var mı: İşte benim ilgilendiğim mesafeyi gösteren mavi bir çizgi ile yukarıdaki iki Alanlarının bir görüntü var? Değilse, nasıl uygulayabilirim?

cevap

3

Tam olarak yapan bir yöntem yok gibi görünüyor; Ancak, PathIterator s kullanarak, şekillerin ana hatları boyunca noktadan diğerine karşılaştırma yapabilmeniz ve mesafeyi manuel olarak bulabilmeniz gerekir.

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

This Wikipedia article verimli kuadratik bariz uygulanmasını önlemek için bunu uygulamak açıklamaktadır.

+0

teşekkürler! PathIterator, şimdiye kadar, özellikle de düzleştirilmiş yol yineleyicisi için iyi çalışır. – MarcTheSpark