यदि एक बहुभुज एक मनमानी लाइन के संबंध में एक मोनोटोन है तो मैं कैसे परीक्षण करूं?


16

परिभाषा : विमान में बहुभुज P को एक सीधी रेखा सन्दर्भ में मोनोटोन कहा जाता है L, यदि L रेखाओं P के लिए प्रत्येक रेखा orthogonal हैP दो बार को ।

बहुभुज को देखते हुए P, क्या यह निर्धारित करना संभव है कि क्या कोई रेखा मौजूद है Lजैसे कि बहुभुज P , संबंध में एकरस है L? यदि हाँ, तो कैसे?

इससे पहले, मैं एक पूछा संबंधित सवाल (जहां मैं अगर एक बहुभुज एक विशेष लाइन के संबंध में एक लय है निर्धारित करने के लिए कैसे पूछा), लेकिन जब अब मैं मामले में दिलचस्पी है L है नहीं दिया जाता है या पहले से निर्दिष्ट।


क्यों न केवल समन्वय प्रणाली को घुमाएं / शिफ्ट करें जैसे कि एक्स- एक्सिस बन जाता है और फिर पुराने एल्गोरिथ्म को फिर से चलाता है? अतिरिक्त काम ओ ( 1 ) में प्रबंधनीय होना चाहिए । LxO(1)
— HdM

4
@ एचडी: लाइन एल को इनपुट के हिस्से के रूप में नहीं दिया गया है।
— त्सुयोशी इतो

जवाबों:


16

हो सकता है।

आप बहुभुज पर विचार करें और "अवतल" कोने पर विचार करें। वे ठीक से परिभाषित करते हैं कि कौन सी रेखाएं बहुभुज को दो बार से अधिक काट देंगी। निम्नलिखित आकृति में मैंने निषिद्ध कोणों के अंतराल (लाल रंग में) को चिह्नित किया। तो आप उन्हें एक साथ रखा और लाल डिस्क में एक छेद देखते हैं, तो वहाँ कोण अधिकृत कर रहे हैं (नीले रंग में)। बहुभुज तब ढलान की किसी भी पंक्ति के संबंध में नीरस है - 1 / तन is (हरे रंग में)।δ−1/tan⁡δ

क्षुद्र ग्रह

अब एल्गोरिथ्म।

चलो हो मैं बहुभुज के वें शिखर। सबसे पहले पूर्ण कोण की गणना α मैं किनारे की ( v मैं वी मैं + 1 ) और भीतरी कोण β मैं शिखर के वी मैं । सभी अच्छी प्रोग्रामिंग भाषाओं में उपलब्ध फ़ंक्शन का उपयोग करें ।vi=(xi,yi)iαi(vivi+1)βiviatan2

β मैं = अल्फा मैं + 1 - अल्फा मैं + { 0  अगर  अल्फा मैं + 1 ≥ अल्फा मैं 2 π  अगर  अल्फा मैं + 1 < α मैं

αi=atan2(yi+1−yi,xi+1−xi)
βi=αi+1−αi+{0 if αi+1≥αi2π if αi+1<αi

कोने का क्रम उलटने अगर वे वामावर्त आदेश, यानी अगर में नहीं हैं नकारात्मक नहीं है। ( s = - 2 π : वामावर्त, s = 2 clock : दक्षिणावर्त)।s=∑iβi−nπs=−2πs=2π

निम्नलिखित के लिए ही है भीतरी कोण से भी बड़ा π है कि, β j > π । मेरे चित्र में लाल वाले। लक्ष्य एक कोण मिल रहा है δ कि में नहीं है ∪ j [ α j + 1 , α j ] सापेक्ष π । अर्थात् ऐसी है कि सभी के लिए जे ऐसी है कि β j > π :mπβj>πδ∪j[αj+1,αj]πjβj>π

(δ<αj+1∨αj<δ) if αj+1<αj
(αj<δ<αj+1) if αj<αj+1

αjαj[0,π)πδ "अंदर" होना चाहिए)।

O(n2)αj mod πγ1,…γmδ∈{γ12,γ1+γ22,…,γm−1+γm2,γm+π2}

δL−1/tan⁡δP


उस चित्रण को बनाने के लिए आपने किस सॉफ्टवेयर का उपयोग किया?
— 19

@jojman मुझे याद नहीं है, लेकिन यह GIMP होना चाहिए था, मैं किसी भी अन्य कार्यक्रम को याद नहीं कर सकता था जो मैंने वापस इस्तेमाल किया था।
— जम्म
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.