2013-06-16 8 views
6

यदि मेरे पास दो सरल आकारों (बहुभुज और एलिप्स) के संघ से बने दो java.awt.geom.Area हैं, तो क्या दो क्षेत्रों के बीच दूरी (यानी निकटतम दूरी) खोजने के लिए वहां कोई तरीका है?जावा में दो आकार/क्षेत्रों के बीच की दूरी?

स्पष्ट करने के लिए: लगता है मैं दो मनमाना क्षेत्रों, जिनमें से प्रत्येक किसी भी प्रकार के आकार के मिलन से बनाई गई है है:

//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) है कि मुझे कम से कम का प्रतिनिधित्व एक डबल देता है क्षेत्र ए में किसी भी बिंदु और क्षेत्र बी में किसी भी बिंदु के बीच की दूरी।

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 अब तक मेरे उद्देश्यों के लिए अच्छी तरह से काम करता है, विशेष रूप से flattened पथ iterator। – MarcTheSpark

संबंधित मुद्दे