Java 関係:クリッピングまとめ
クリッピング プログラム覚書.
実装は WA アルゴリズムとは若干異なる方法で行いました.
上の図はクリッピングの例です.
緑のラインがクリッピング ウィンドウ.
青のラインがポリゴン.
赤のラインがクリッピングされたポリゴンです.
なお,赤のラインはずらして表示しています.
ここで,ポリゴンとクリッピング ウィンドウとの交点は次のように実装しています.
下の図の黒い点が交点です.
左右の凸部分がクリッピング ウィンドウの内と外とに対して非対称になっています.
WA アルゴリズムでは,右の凸部分も左の凸部分と同様に交点を取るのですが,その場合,クリッピングされたポリゴンでは2点を余計に数えます.
ここでは,簡単化のために上記のように非対称に交点を取るようにしました.
他に,7/19分 で触れていた「例外」の件ですが,正しくは私の勘違いでした.
私の場合はクリッピング ウィンドウ上にポリゴンの頂点がある場合全てを「例外」としていたので,自明な場合も「例外」として数えていました.
ただし,自明な場合の方が処理としては複雑だったのですが.
参考文献:David F. Rogers 著,セイコー電子工業(株)電子機器事業部訳,
実践コンピュータグラフィックス 基礎手続きと応用
結局,例外の実装に関する原著論文は参照せず.
メモ:攻殻機動隊 1.5,士郎正宗