ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】GrainerHormannアルゴリズムを使ってPolygon Clipping

成果物

f:id:Nekodigi:20200401151308p:plain
前回Polygon Clippingを自力でやってみたのですが、あまりうまくいかなかったので、調べてみたところUnityでGrainerHormannアルゴリズムてPolygon Clippingを実装しているサイトがあったので、早速Processingで実装してみました。

仕組み

多角形A,Bのそれぞれで、交差する点を追加したループ上のリストを作ります。(交差する点は多角形A,Bのどちらにも含まれているので、二つのリストを行き来することができます)。二つのリストを行き来しながら、順番に点を繋いでいくと、多角形の交差を求めることができます。また、点を選んでいく向きなどを変更することでXOR,Union,Differenceなども求めることができます。こちらの論文のイラストがわかりやすいのでぜひご覧ください。
https://www.inf.usi.ch/hormann/papers/Greiner.1998.ECO.pdf

コード

GrainerHormannClippingという名前で追加しています。
github.com
今回は、こちらのサイトをもとにしています。ぜひご覧ください。
github.com