Skip to main content
QUICK REVIEW

[論文レビュー] A Simple and Correct Even-Odd Algorithm for the Point-in-Polygon Problem for Complex Polygons

Michael Galetzka, Patrick Glauner|arXiv (Cornell University)|Jul 15, 2012
Computational Geometry and Mesh Generation被引用数 4
ひとこと要約

この論文は、自己交差する辺と穴を持つ複雑な多角形に対し、単純で正しいO(n)時間の偶奇アルゴリズムを提示する。補助辺を用いてx軸上にある頂点を安全に処理し、必要に応じてレイヤーを全x軸にまで延長することで、特殊ケースの失敗を回避し、すべての入力に対して正しい偶奇の交差数え上げを保証する。

ABSTRACT

Determining if a point is in a polygon or not is used by a lot of applications in computer graphics, computer games and geoinformatics. Implementing this check is error-prone since there are many special cases to be considered. This holds true in particular for complex polygons whose edges intersect each other creating holes. In this paper we present a simple even-odd algorithm to solve this problem for complex polygons in linear time and prove its correctness for all possible points and polygons. We furthermore provide examples and implementation notes for this algorithm.

研究の動機と目的

  • 自己交差する辺と穴を持つ複雑な多角形における点-多角形判定の実装エラー率を低減すること。
  • 点が辺上または頂点上にある場合の特殊ケース処理を排除し、既存のアルゴリズムが頻繁に失敗するのを防ぐこと。
  • すべての可能な多角形構成(複雑なものも含む)で動作する、証明可能に正しい偶奇アルゴリズムを提供すること。
  • 単純さと正しさを保ちながら、線形時間計算量O(n)を維持すること。

提案手法

  • 点Qから正のx軸に沿ってレイヤーを発射し、辺との交差回数を数える。
  • x軸上にある頂点はスキップされ、非同一直線上の頂点間で補助辺が作成される。
  • 正のx軸上にある頂点をスキップする際、交差数の正確さを保つためにレイヤーを全x軸にまで延長する。
  • 頂点との点一致または辺内への点の包含を最初にチェックし、該当する場合は即座に「内部」と返す。
  • 交差検出には、補助辺がx軸と交差するかどうかを特定する堅牢な幾何関数が使用される。
  • 最終的な判断は、交差総数が奇数(内部)か偶数(外部)かによって下される。

実験結果

リサーチクエスチョン

  • RQ1自己交差する辺と穴を持つ複雑な多角形において、特殊ケースの回避策なしにすべての端的なケースを正しく処理できる単純な偶奇アルゴリズムを設計できるか?
  • RQ2レイヤー(例:x軸)上にある頂点を安全に処理することで、交差数の正確さを保てるか?
  • RQ3自己交差する多角形を含むすべての多角形タイプで、正しさを保ちながらO(n)時間計算量を維持できるか?
  • RQ4誤差を引き起こさずに、元の多角形の辺の代わりに補助辺を交差数え上げに使用できるか?

主な発見

  • アルゴリズムは、自己交差や穴を持つ多角形を含め、すべての可能な点と複雑な多角形に対して正しく証明されている。
  • x軸上にある頂点をスキップする際、補助辺を用いることで、元の辺が正のx軸と交差しない場合でも正確な交差数え上げが保証される。
  • 正のx軸上にある頂点をスキップする際、レイヤーを全x軸にまで延長することで、必要な交差が正しく捉えられ、10種類の異なる幾何的構成で検証済みである。
  • アルゴリズムは設計上特殊ケースのチェックを回避しており、既存の実装で一般的に発生する失敗モードを排除している。
  • 各頂点がトレバーサル中に正確に1回だけ訪問されるため、時間計算量はO(n)である。
  • オープンソース実装により、アルゴリズムの正しさと実世界での実用性が確認された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。