General Polygon Clipper

提供: MonoBook
ナビゲーションに移動 検索に移動

General Polygon Clipper (GPC)とは、2Dの多角形のクリッピング演算(差分、交差、排他的論理和、和など)を行えるC言語で書かれたライブラリである。多角形の三角形分割も行える。

GPCはC言語で書かれているが、他のいくつかの言語でも動作するように移植されているので詳細はググれ

概要[編集 | ソースを編集]

似たようなアルゴリズムは他にも数多くあるが、どれも机上の空論では最強だが「プログラミング言語で実装」すると浮動小数点丸め誤差の蓄積などが原因で破綻するもの多い。そのような中でGPCは「安定性」に関しては最強だと言われている。

GPCの最初のリリースは、1997年にAlan Murta氏によって設計・実装された。GPCの最終リリースはバージョン2.32となっている。2020年8月以降、GPCは作者による公式配布を終了している。2021年12月、Alan Murta氏とPaint.NET作者のRick Brewster氏の話し合いの末、GPCのコードのコピー(v2.32)がによってMITライセンスの下でGitHubに置かれている。

特徴[編集 | ソースを編集]

  • 差分、交差、排他的論理和、和のクリップ演算ができる。
  • 輪郭の頂点は時計回り、反時計回りで指定できるのでどちらでもよい。
  • 輪郭は、凸、凹、自己交差のいずれでもよい。
  • 輪郭は入れ子になっていてもよい。つまり「穴」を持つことができる。以外とこれができないものが多い。

これらの機能を使えばアドビイラストレーターのような2Dドローソフトをサクッと実装できる。

多角形の三角形分割にも使える。

ただGPCでの多角形の三角形分割は「勝手に頂点が追加されて三角形が多めになる傾向がある」という欠点もある。ローポリゴンを期待する人には「poly2tri」などの方が良いかもしれない。

移植[編集 | ソースを編集]


外部リンク[編集 | ソースを編集]