हो सकता है।
आप बहुभुज पर विचार करें और "अवतल" कोने पर विचार करें। वे ठीक से परिभाषित करते हैं कि कौन सी रेखाएं बहुभुज को दो बार से अधिक काट देंगी। निम्नलिखित आकृति में मैंने निषिद्ध कोणों के अंतराल (लाल रंग में) को चिह्नित किया। तो आप उन्हें एक साथ रखा और लाल डिस्क में एक छेद देखते हैं, तो वहाँ कोण अधिकृत कर रहे हैं (नीले रंग में)। बहुभुज तब ढलान की किसी भी पंक्ति के संबंध में नीरस है - 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+{02π if αi+1≥αi 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