2015-07-15 8 views
10

यह बूस्ट पॉलीगॉन (बूस्ट ज्यामिति के बारे में नहीं) के बारे में एक प्रश्न हैबूस्ट पॉलीगॉन की उपयोगिता क्या है?

हाल ही में मैं कुछ ज्यामितीय बहुभुज निर्माण के साथ खेलने की कोशिश कर रहा था। चूंकि Boost Geometry (अलग लाइब्रेरी जो बहुभुज से संबंधित है) बूस्ट 1.58 में परिस्थिति में काम नहीं कर रहा है, हालांकि मैं Boost Polygon पर प्रयास करूंगा।

लाइब्रेरी को समझने की कोशिश करने के बाद और अपेक्षित नतीजों को प्राप्त करने के बाद मुझे पता चला कि लाइब्रेरी केवल पूर्णांक निर्देशांक के लिए काम करती है। पहले मैंने हालांकि यह इनपुट के लिए एक सीमा थी, लेकिन वास्तव में सभी आंतरिक संचालन और आउटपुट पूर्णांक हैं, यह सभी आउटपुट को काफी क्विर्की बनाता है, उदाहरण के लिए, बहुभुज के लिए चौराहे थोड़ा विकृत होते हैं (क्योंकि शिखर के निर्देशांक होना चाहिए पूर्णांकों)।

मुख्य पृष्ठ से एक उद्धरण (जोर मेरा):

समन्वय डेटा प्रकार सभी डेटा प्रकार और पुस्तकालय द्वारा प्रदान की एल्गोरिदम के टेम्पलेट पैरामीटर है, और अभिन्न होने की उम्मीद हैचल बिन्दु चल बिंदु निरूपण के बारे में तथ्य यह है कि (sic) चल बिन्दु मजबूती प्राप्त करने का अर्थ है की वजह प्रकार पुस्तकालय में लागू एल्गोरिदम द्वारा समर्थित नहीं हैं डेटा समन्वय एल्गोरिदम और आम तौर पर मंच विशिष्ट मान्यताओं का एक अलग सेट ।

पहले मैं हालांकि पर है कि यह सटीक और अयथार्थ प्रतिनिधित्व के बीच एक समस्या थी तो मैं यह तर्कसंगत (रेशनल बूस्ट) प्रकार के साथ काम करने की कोशिश की, लेकिन वास्तव में (मैं इसे संकलित करने के लिए एक आवरण तर्कसंगत वर्ग पता लगा) पूर्णांक निर्देशांक एक सख्त आवश्यकता है (कोड में ऐसे भाग हैं जो वास्तव में मध्यवर्ती परिणामों के निर्माण के लिए एक को जोड़ते हैं और घटाते हैं)।

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

क्या मुझे इस पुस्तकालय के उपयोग के बारे में कुछ महत्वपूर्ण याद आ रही है?

क्या यह पुस्तकालय "pixelated" समस्याओं के लिए है? यदि समन्वय पूर्णांक होने के लिए प्रतिबंधित हैं तो उपयोगिता क्या है?

क्या निर्देशांक को बहुत बड़ी संख्या में स्केल करने का विचार है और फिर परिणामों को बाद में ज्यामितीय अनुप्रयोगों के लिए पुनर्मूल्यांकन करना है?

मैं समझता हूं कि फ्लोटिंग-पॉइंट्स के साथ कम्प्यूटेशनल ज्यामिति बहुत दर्दनाक है, लेकिन यह लाइब्रेरी सटीक राशन के साथ संगत होने का प्रयास क्यों नहीं करती है?

क्या उपयोग के वास्तविक उदाहरण हैं? (मैनुअल उदाहरण देने में बहुत बुरा है) क्या कोई वास्तव में इस पुस्तकालय का उपयोग कर रहा है?

बोनस प्रश्न: क्या यह एक छोड़ी गई लाइब्रेरी है?


यह कैसे पुस्तकालय पूर्णांक से बर्ताव करता है का एक उदाहरण है निर्देशांक:

यहाँ यह क्या, अभिन्न बहुभुज के साथ होता है अगर मैं कम संख्या का उपयोग निर्देशांक प्रतिनिधित्व करने के लिए का एक उदाहरण है परिणाम भी ज्यामितीय रूप से संगत नहीं हैं। (दो बहुभुज polygon(-2,0)(2,-2)(6,4)(0,2) कर रहे हैं और polygon(-5,0)(-1,-2)(3,4)(-3,2))

smallints

(ध्यान दें कैसे तिरछा सब कुछ बाहर आता है।)

लेकिन जब मैं बहुभुज पैमाने पर बड़े पूर्णांक के लिए निर्देशांक परिणाम सटीक अधिक (दो मिल बहुभुज polygon(-200,0)(200,-200)(600,400)(0,200) और polygon(-500,0)(-100,-200)(300,400)(-300,200), ऊपर दो के लिए बढ़ाया संस्करण हैं):।

largeints


संपादित करें: मैंने कम्प्यूटेशनल ज्यामिति का थोड़ा और सीखा, जाहिर है कम्प्यूटेशनल ज्यामिति की मजबूती एक बहुत ही मुश्किल समस्या है। रणनीतियों में से एक पूर्णांक अंकगणित का उपयोग करना है। ऐसा लगता है बूस्ट। पोलिगॉन इस दृष्टिकोण को लेता है। निरंतर अंतरिक्ष में समस्याएं उचित रूप से स्केल की जानी चाहिए।

+0

का उपयोग कर मैं वास्तव में संख्यात्मक सटीकता पहेली के लिए एक उचित उत्तर नहीं पता द्वारा पुस्तकालयों को जोड़ सकते हैं। शायद मैं इसे बाद में अपने जवाब में जोड़ दूंगा। – sehe

उत्तर

3

इसे छोड़ दिया नहीं गया है।

हां इसका उपयोग (कई) लोगों द्वारा किया जाता है।

एक चीज जो ऐसा लगता है कि एक ठोस उपयोगकर्ता आधार है उदा। वोरोनोई आरेख और संबंधित एल्गोरिदम। आप एसओ पर भी इसके बारे में अच्छी संख्या में सवाल पा सकते हैं, ताकि आप यह देखने के लिए आगे बढ़ सकें कि वे इसका क्या उपयोग करते हैं।

बोनस जवाब

तुम भी

#include <boost/geometry/geometries/adapted/boost_polygon.hpp> 
+0

कल मैंने 'बूस्ट-पॉलीगॉन' टैग बनाया ताकि हम इन सवालों को एसओ में पहचानना शुरू कर सकें। अगर आपको अन्य प्रश्न मिलते हैं तो कृपया टैग का उपयोग करें (मुझे केवल 4 या 5 मिले)। मैं उलझन में हूं कि पूर्णांक निर्देशांक के लिए वोरोनोई आरेखों (या उस मामले के लिए कई अन्य विशेषताओं) का उपयोग क्या है। मुझे लगता है कि विचार सभी ज्यामितीय वस्तुओं को MAX_INT तक स्केल करना है, Boost.Polygon के साथ काम करें और मूल पैमाने पर वापस जाएं। – alfC

+0

जैसा मैंने कहा था। मैं पुष्टि/अस्वीकार नहीं कर सकता। लोग इसका उपयोग कर रहे हैं, शायद यह देखना शुरू करने के लिए एक अच्छी जगह है। मुझे यकीन है कि मैंने उन अनुप्रयोगों को देखा जो ऐसा नहीं लग रहे थे। मैं उस धारणा पर अटक नहीं जाऊंगा (मैंने बूस्ट पॉलीगॉन के साथ उस तरह की स्केलिंग नहीं देखी है) – sehe

+2

धन्यवाद, मैंने बहुभुज संचालन का एक उदाहरण जोड़ा और कैसे अजीब व्यवहार (स्पष्ट रूप से डिजाइन द्वारा) किया। – alfC

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