2011-07-01 11 views
6

मेरे पास बहुभुज का एक सेट है और मैं इसके बीच और एक सेगमेंट के बीच चौराहे का परीक्षण करना चाहता हूं। मैंने मैन्युअल की जांच की लेकिन मुझे मिलान मिलान नहीं मिला। अंक, रेखाएं, सेगमेंट, त्रिकोण, विमानों के बीच छेड़छाड़ मौजूद है। और बहुभुज के बीच चौराहे भी हैं। मेरा प्रश्न है:सीजीएएल: सेगमेंट और बहुभुज के बीच छेड़छाड़?

  1. क्या ऐसा कोई कार्य है?
  2. यदि नहीं, तो क्या इसका मतलब है कि मुझे बहुभुज को खंडों में तोड़ने और इन खंडों के बीच छेड़छाड़ करने की आवश्यकता है? (कारण यह है कि मैं ऐसा करने में अनिच्छुक हूं, मैंने सोचा कि वास्तव में सीजीएएल बहुभुज के बीच छेड़छाड़ करने के लिए इस तरह का उपयोग कर सकता है। लाइन और बहुभुज को छेड़छाड़ करने के लिए ऐसा कोई काम नहीं है?) या क्या कोई और बेहतर है ऐसा करने का तरीका?

उत्तर

7

पॉलीगॉन_सेट_2 ऑब्जेक्ट बनाने का सबसे आसान तरीका है जिसमें कई बहुभुज हो सकते हैं। इस सेट के साथ बाहरी बहुभुज के चौराहे का परीक्षण करने के लिए आप बस do_intersect विधि को लागू करते हैं।

उदाहरण के लिए:

typedef CGAL::Polygon_set_2<Kernel, std::vector<Kernel::Point_2>> Polygon_set_2; 
Polygon_set_2 ps; 
Polygon_2  poly; 
Polygon_2  line; // line is a polygon defined by 2 points 

ps.insert(poly); 
bool intersect = ps.do_intersect(line); 

अधिक polygon_set_2 पर:

मुझे आशा है कि यह स्पष्ट है, किरिल

+0

ओह, मुझे एहसास नहीं हुआ कि बहुभुज में केवल दो अंक हो सकते हैं। लगता है काम करता है! –

+1

यह ps.insert (पॉली) है; ps.insert (रेखा); ? – sabbir

+0

मुझे यह त्रुटि मिलती है: स्पष्टीकरण: बहुभुज सीमा स्वयं ओवरलैप करती है। – sabbir

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