2010-03-31 22 views
8

मेरे पास छवियों पर आधारित बिंदुओं का सेट है। अंक के ये सेट एक अनियमित बंद आकार बनाते हैं। मुझे इस आकार का क्षेत्र ढूंढना होगा। क्या कोई शरीर जो सामान्य एल्गोरिदम है जो क्षेत्र की गणना के लिए उपयोग किया जाता है? या बूस्टर जैसे पुस्तकालयों में कोई समर्थन उपलब्ध है? मैं सी ++ का उपयोग कर रहा हूँ।अनियमित आकार का क्षेत्र

+0

अगली बार कोशिश मठ ओवरफ्लो (http://mathoverflow.net/) और फिर सबसे अच्छा एल्गोरिथ्म वे तुम्हें देने के कार्यान्वयन के बारे में एक प्रश्न के साथ यहां पर वापस आएं। आपको शायद बेहतर परिणाम मिलेंगे। – Ricket

+12

@ रैकेट: मैथ ओवरफ्लो स्नातक स्तर और ऊपर के शोध प्रश्नों के लिए है। यह सवाल बहुत आसान है और इसे खारिज कर दिया जाएगा। – Brian

+0

आप इस लिंक को आजमा सकते हैं: http://www.wikihow.com/Calculate-the-Area-of-a-Polygon उम्मीद है कि यह –

उत्तर

19

आप बहुभुज सरल है (यह लगातार क्षेत्रों के जोड़े के लिए छोड़कर आम में किसी भी बिंदु नहीं है) तो विकिपीडिया मदद करने के लिए आता है:

क्षेत्र के लिए सूत्र

alt text

है

(यह मानता है कि अंतिम बिंदु पहले एक के समान है)

आप आसानी से

01 के रूप में यह लागू कर सकते हैं पाठ्यक्रम कोने का

बहुभुज में उनके प्राकृतिक निम्नलिखित के अनुसार आदेश दिया जाना चाहिए ..

+0

आप अंतिम सेगमेंट भूल गए हैं। – Beta

+0

आप थे, सही: क्योंकि सूत्र उस बिंदु को मानता है [n] == बिंदु [0]। एल्गोरिदम के लिए अंतिम चरण जोड़ा गया। – Jack

+0

दूसरी पंक्ति पर दूसरी ओर, बिंदु [0] यह निर्दिष्ट नहीं करता है कि यह एक्स या वाई का उपयोग कर रहा है या नहीं। मैं एक्स मान रहा हूं, फोरलोप में कोड दिया गया है। इसके अलावा, मैं ब्रैकेट में फॉलोअप संलग्न कर दूंगा ताकि इसे पढ़ना आसान हो। –

6

कि के लिए एक summation formula नहीं है।

+3

में मदद करता है यह उत्तर वास्तव में सुधार किया जा सकता है ... – ThiefMaster

1

आप और अधिक सटीक संभावित रूप से एक ग्राफिकल उदाहरण प्रदान होने के लिए चाहते हो सकता है।

उदाहरण के लिए, यदि अंक आपके पास केवल पिक्सल हैं, तो पिक्सेल की संख्या क्षेत्रफल के बराबर। लेकिन यदि अंक बहुभुज के कोनों हैं, तो बहुभुज का क्षेत्र आसानी से निर्धारित नहीं होता है। आप बहुभुज त्रिभुज का उपयोग करेंगे, और त्रिकोण के क्षेत्रों को प्राप्त करेंगे।

0

नोट: यदि आप अंक के क्रम को नहीं जानते हैं और यह गारंटी नहीं दे सकते कि आपका बहुभुज उत्तल है, तो आकार के क्रम को निर्धारित करना संभव नहीं है, क्योंकि एक से अधिक संभावित आदेश बिंदु हो सकते हैं एक बहुभुज पैदा करता है। यदि आप जानते हैं कि बहुभुज उत्तल है, तो अंक का क्रम निर्धारित करना आसान है। केवल एक विशेष बिंदु से कोण से बिंदुओं को क्रमबद्ध करें।, पहली बात यह है कि वह स्वयं और प्रारंभिक बिंदु के बीच एक रेखा बनाता है जैसे कि अन्य सभी बिंदु रेखा के एक ही तरफ हैं। इस प्रक्रिया द्वारा गठित त्रिकोण का उपयोग क्षेत्र की गणना के लिए भी किया जा सकता है।

0

Boost.Geometry में बहुभुज की क्षेत्र गणना के लिए समर्थन है (जिसे अभी तक बढ़ावा में स्वीकार नहीं किया गया है और जो उपयोग करने में बहुत भ्रमित है)। अन्यथा आपको पॉलीगॉन निर्धारित करना होगा जो पहले आपके बिंदुओं द्वारा परिभाषित किया गया है। इसके सभी बिंदुओं से बहुभुज के शिखर हैं इसलिए यह आपके बिंदु सेट को सही तरीके से व्यवस्थित करने का एक मामला है। एक और संभावना यह है कि आप अपने बिंदु सेट के उत्तल ढक्कन की तलाश में हैं (http://en.wikipedia.org/wiki/Convex_hull_algorithms देखें)।

0

शील के बिना, मैं अपने जवाब देने के लिए एक और सवाल Combined area of overlapping circles को देखें। मोंटे कार्लो मजबूत, आसान-समानांतर है और अंत में, आपको आवश्यक सटीकता का उत्तर देगा।

+2

इस मामले में सटीक क्षेत्र की गणना * एक * मोंटे कार्लो परीक्षण करने से कम महंगी है। – Beta

+0

यह पता लगाना कि पॉलीगोन के अंदर कोई बिंदु है या नहीं, बस क्षेत्र की गणना करने से कहीं अधिक आसान नहीं है। – Brian

0

यह करने के लिए सबसे आसान तरीका शायद अपने आकार त्रिकोणाकार और त्रिकोण के क्षेत्रफल की गणना करने के लिए है। डेव एबरली की एक लाइब्रेरी है जिसे बुस्ट लाइसेंस कहा जाता है जो त्रिकोण के साथ मदद कर सकता है; here अधिक जानकारी है। उदाहरण के लिए, त्रिकोणुटेक की तलाश करें।

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