ポリゴンが任意の線に関して単調かどうかをテストするにはどうすればよいですか?


16

定義:Aポリゴン平面では直線に関して単調と呼ばれるLへのすべての行が直交する場合は、Lと交差P最も二回で。PLLP

多角形与えられた場合、多角形PがLに関して単調であるような線Lが存在するかどうかを判断することは可能ですか?はいの場合、どのように?PLPL

以前、関連する質問(特定のラインに関してポリゴンが単調かどうかを判断する方法を尋ねました)を尋ねましたが、が事前に指定または指定されていない場合に興味があります。L


がx軸になるように座標系を回転/シフトしてから、古いアルゴリズムを再度実行するのはなぜですか?追加の仕事はO(1 )で管理可能であるべきです。LxO(1)
— -HdM

4
@HdM:行Lは入力の一部として指定されていません。
— 伊藤剛

回答:


16

可能です。

多角形であり、「凹」頂点を考慮してください。これらは、ポリゴンと2回以上交差するラインを正確に定義します。次の図では、禁止角度の間隔(赤)をマークしました。それらをまとめて、赤いディスクに穴が開いている場合、承認された角度(青)があります。ポリゴンは、次いで、勾配の線に対して単調である- 1 /褐色δ(緑色)。δ−1/tan⁡δ

小惑星

これでアルゴリズム。

vi=(xi,yi)iαi(vivi+1)βiviatan2

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

s=∑iβi−nπs=−2πs=2π

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


そのイラストを作るのにどのソフトウェアを使用しましたか?
— ジョイマン

@jojman覚えていませんが、GIMPでなければなりませんでした。当時使用していた他のプログラムは思い出せません。
— jmad
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.