2009-02-03 14 views
5

से अधिक मैं बहुभुज के आंतरिक कोणों की संख्या कैसे प्राप्त कर सकता हूं, 180º से बड़ा, केवल बहुभुज के शिखर वाले हैं?एक बहुभुज के आंतरिक कोणों की संख्या खोजें, 180º

प्रत्येक चरम के लिए मैं हमेशा आंतरिक कोण चाहता हूं, बाहरी नहीं।

ब्राजील से धन्यवाद।

+0

आप केवल बहुभुज द्वारा बहुभुज को परिभाषित नहीं कर सकते हैं। आप भी पक्ष निर्दिष्ट करने के लिए _have_। –

+0

मेरे पास vertex क्रम में है, इसलिए मुझे पक्षों की आवश्यकता नहीं है। – lucasbls1

+0

बहुभुज पॉलीगॉन देने के लिए बिंदुओं को परिभाषित किया जाएगा (पक्ष)। – Swinders

उत्तर

4

आप स्केलर उत्पाद (डॉट उत्पाद) ले कर बस दो वैक्टरों के कोण को निर्धारित कर सकते हैं।एक उपयोगी संपत्ति यह है कि यदि वेक्टर ऑर्थोगोनल हैं, तो उनके स्केलर उत्पाद शून्य है; अगर उनका कोण उलझन में है, तो उत्पाद नकारात्मक है, अन्यथा सकारात्मक है। तो, कदम उठाने के लिए कर रहे हैं:

  • V1 के लिए V0 से पहले किनारे लगता है (वेक्टर के रूप में, आप निर्देशांक को घटा कर इस मिल), तो (बाईं ओर 90 डिग्री से बारी बारी से यह यह सिर्फ बदलाव ला रहा है (x y)(-y x) करने के लिए)
  • V2 (घुमाया नहीं)
  • अन्यथा एक अदिश उत्पाद लेने (यह सिर्फ (x1 * x2) + (y1 * y2))
  • है अगर अदिश उत्पाद नकारात्मक है, यह एक सही बारी है, के लिए V1 से दूसरे किनारे लगता है बाएं मोड़
  • अगला किनारे ...
  • यदि आप चरम सीमाओं के माध्यम से गुजरते हैं, तो सही मोड़ों की संख्या गिनें, अन्यथा बाईं ओर की संख्या
  • अंतिम चरम के लिए, आपको पहले (i.e. किनारों वी.एन. V0 और V0 के लिए V1 के लिए)

संपादित का उपयोग करें:

 
    1 n-1 
A = --- SUM(x(i)*y(i+1) - x(i+1)*y(i)) 
    2 i=0 
: आप बहुभुज के क्षेत्रफल की गणना करने के लिए निम्न सूत्र का उपयोग करके प्राप्त कर सकते हैं कोने वामावर्त या दक्षिणावर्त आदेश दिया जाता है कि क्या

जहां n शिखर की संख्या है। x(n) और y(n)x(0) और y(0) (बहुभुज को बंद करने के लिए) के समान हैं।

यदि यह सकारात्मक है, तो कोष्ठक को दक्षिणावर्त के विपरीत, अन्यथा दक्षिणावर्त का आदेश दिया जाता है।

संपादित: जब आप रोटेशन और अदिश उत्पाद के कदम को आसान बनाने में, आप दो आयामी पार उत्पाद, x1*y2 - x2*y1 के लिए सूत्र पर पहुंचें। यह ऊपर पहला कदम को सरल:

  • V1 के लिए V0 से पहले बढ़त को खोजने V1 से दूसरे किनारे के लिए
  • Dito V2 के लिए
  • उत्पाद पार ले (वेक्टर के रूप में, निर्देशांक को घटा कर) ((x1 * y2) - (x2 * y1))
  • अगर उत्पाद पार सकारात्मक है, यह एक छोड़ दिया बारी

क्षमा जटिल पहले दृष्टिकोण के लिए है।

+0

क्या आप स्केलर उत्पाद को परिभाषित कर सकते हैं? –

+0

शायद डॉट उत्पाद। क्रॉस उत्पाद का उपयोग करना बहुत आसान है क्योंकि यह अच्छी तरह परिभाषित है कि आपको घुमावदार पता है। – MSN

+0

स्केलर उत्पाद: x1 * x2 + y1 * y2 = scalar –

-1

यह ज्यामिति से संबंधित एक प्रश्न है, बिल्कुल प्रोग्रामिंग से संबंधित नहीं है।

यदि आपके पास शिखर हैं, तो आप त्रिभुज के कोणों को कैसे ढूंढते हैं, इस तरह आप केवल त्रिकोणमिति द्वारा आंतरिक कोण ढूंढ सकते हैं।

तीन आसन्न शिखर का उपयोग करके, एक त्रिकोण की कल्पना करें और उन्हें आंतरिक कोण मिलते हैं। ,

Construct internal triangle

+0

यह केवल तभी काम करता है जब बहुभुज पूरी तरह उत्तल हो। – lucasbls1

0

मैं इस एक अनियमित बहुभुज है यह सोचते हैं रहा हूँ, क्योंकि यह होगा:

Polygon

हम एक त्रिकोण के रूप में निर्माण कर सकते हैं:

उदाहरण के लिए, बहुभुज को देखो एक नियमित बहुभुज के लिए 180 डिग्री से अधिक आंतरिक कोण होने के लिए वास्तव में मुश्किल हो।

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

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

 
tan(angle_to_left) = (v.y-left.x)/(v.y-left.y) 
tan(angle_to_right) = (v.y-right.x)/(v.y-right.y) 

फिर कोण एक साथ जोड़ें।

अंत में, 180 से अधिक होने वाले सभी कोणों के लिए, काउंटर बढ़ाना। कोने के सभी अध्ययन करने के बाद अपने काउंटर आपको बता देंगे कि कितने आंतरिक कोण हैं एक से अधिक 180.

2
  1. कोने की convex hull का पता लगाएं।
  2. कन्वेंक्स हल पर झूठ बोलने वाले शीर्षकों की पहचान करें। ये 180 बाहरी कोणों के साथ आपके उम्मीदवार शिखर हैं।
  3. प्रत्येक ऐसे कशेरुक कोण के बारे में आगे की जांच के लिए (अभी किसी भी तरह से नहीं सोच सकता है लेकिन आप इसे बढ़ा सकते हैं)।
+0

उत्तल हॉल से बाहर किए गए एकल कोष्ठकों के लिए, आंतरिक कोण> 180 है। शिखर की एक श्रृंखला के लिए, श्रृंखला के दोनों छोर पर बहिष्कृत चरम और शामिल शिखर द्वारा बनाए गए बहुभुज के उत्तल ढक्कन का पुनरावृत्ति अध्ययन करें। – user57368

+0

इस उत्तर को पीछे की तरफ मिल गया है - अवतल आंतरिक कोणों को ढूंढने के लिए एक सरल बहुभुज _involves_ के उत्तल ढक्कन को खोजने का सबसे प्रभावी तरीका। कनेक्टिविटी के क्रम में अंक – Svante

0

स्पर्शक के साथ समस्या x == 0 है। यदि आप केवल बहुभुज के शिखर को जानते हैं, तो आप तब तक पर्याप्त नहीं जानते जब तक कि यह त्रिकोण नहीं है क्योंकि उनके पास कनेक्टिविटी की कोई भी प्रकार हो सकती है।

मान लें कि आप कनेक्टिविटी को जानते हैं, तो आपको घुमावदार क्रम की गणना करने की आवश्यकता होगी (यानी, पॉलीगॉन के आसपास बिंदु किस दिशा में जाते हैं?)। घुमावदार आदेश के साथ, आप उसके पड़ोसी बिंदुओं के साथ हर बिंदु का क्रॉस उत्पाद ले सकते हैं और कोण प्राप्त करने के लिए इसके परिमाण की व्यस्त साइन ले सकते हैं।

+0

अंक। – lucasbls1

+0

एमएसएन, अच्छा बिंदु। – Niyaz

0

पिछले दो वैक्टर के इंटीरियर कोण (एक उदाहरण के रूप में) ढूँढना, हम बहुभुज के अंतिम दो वैक्टर के लिए इस समीकरण को लागू करने की जरूरत है:

angleRadians = Math.acos ((vx1 * VX2 + vy1 * vy2)/(Math.sqrt (vx1 * vx1 + vy1 * vy1) * Math.sqrt (vx2 * vx2 + vy2 * vy2)));

यह वैक्टर के डॉट उत्पाद का उपयोग कर रहा है। यदि आपके पास इस पर प्रश्न हैं, here's a tutorial

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

मैंने यहां अपना जेएस कोड शामिल किया है, एक गिस्ट के रूप में: https://gist.github.com/3741816

: डी