回答:
Wolg は、が原点と想定できます。
上記のアルゴリズムのランタイムがことを確認するのは簡単です。
ラジアルラインスイープを実行して問題を解決できます-
ソート線分の端点は、角を結ぶ線WRT、エンドポイントブレークタイからの距離をWRT、メークを。放射状に(時計回りに)スイープすると、新しいラインセグメントの開閉に対応する2つのタイプのイベント「open」と「close」が維持されます。常に「アクティブ」なラインセグメントの数を追跡します(「アクティブ」とは、ラインセグメントの「オープン」イベントに対応するエンドポイントに到達したが、まだスイープ)。任意の時点で「アクティブな」ラインセグメントが1つしかない場合、このセグメントはから表示されます。
スイープを開始するときは、常に「オープン」イベントから開始するように注意する必要があります。
そのようなイベントはあり、アクティブセグメントの数の追跡は、セグメントごとに一定の時間で実行できます(バランスのとれたBSTを使用して、ハッシュテーブルまたは対数時間を介して)。したがって、そのときのアルゴリズムの支配的なステップは、必要に応じて時間を要するソートです。
すべての計算ジオメトリの問題と同様に、見落としているいくつかのコーナーケースがあるかもしれませんが、ラジアルラインスイープ中のある時点で、アクティブなラインセグメントが1つしかない場合、から見えるという一般的な考えはこの問題を解決する核心。