⚠ ローカルファイルとして開いています。Chromeのセキュリティ制限によりコンソール警告が出ますが動作に影響はありません。

ベジエ曲面 輪郭線抽出

Bezier Clipping による シルエット(輪郭線)・明暗境界線の抽出 — f(u,v)=(S−E)·N の厳密ベジエ係数 + 凸包判定 + 包絡線クリップ + マーチングスクエア
★ 形状選択
32パッチ / 290制御点
★ 抽出モード
f は 8×8 次のベジエ関数(透視)
★ ベジエクリッピング設定
0=パッチ単位のみ判定(粗い) 8=最大細分化(高精度・低速)
末端パッチ内をマーチングスクエアで細分(線分抽出)
包絡線クリップを使う
OFF にすると単純4分割のみになり、判定ノード数の差が統計に現れます
表示設定
半透明曲面
曲面ワイヤ
輪郭線
表裏を色分け
パッチ境界線
線画モード
UV分割図(右下)
統計
パッチ数
f の次数
判定ノード数
凸包で棄却
クリップで収縮
輪郭線分数
計算時間
🖱 ドラッグ → 視点回転(輪郭線は視点依存なので毎回再計算)
🖱 ホイール → ズーム

面が視線に対して真横を向く点、すなわち
f(u,v) = ( S(u,v) − E ) · N(u,v) = 0
が輪郭線の条件です。N = Su×Sv は 5×5 次、 f は 8×8 次のベジエ関数になるので、その制御係数を厳密に計算し、 全係数が同符号なら輪郭線は存在しない(凸包性による棄却)と判定できます。 符号が混在する場合のみ、行・列の係数から作る包絡線でUV範囲を収縮させ、 末端でマーチングスクエアにより零集合を線分として取り出します。

E を光源に置き換えれば、同じコードがそのまま明暗境界線の抽出になります。
視点: 左ドラッグ / ズーム: ホイール