★ ベジエクリッピング設定
OFF にすると境界箱の棄却と4分割だけになります。判定ノード数の差が統計に現れます
ON:全制御点の重みを1とみなして(=従来の非有理ベジエクリッピングと同じ計算で)交差を求めます。
OFF:制御点の実際の重みを使う厳密な有理ベジエクリッピングで交差を求めます。同じ形状・条件で ON/OFF を切り替えて交差線や統計の差を比較できます。
🖱 ドラッグ → 視点回転 🖱 ホイール → ズーム
S₁(u,v) = S₂(s,t) は未知数 4・条件 3 なので、解は 1 次元の交差曲線です。
(u,v,s,t) の 4 次元の箱に対し、凸包による棄却を 2 段構えで行います。
① 制御点の境界箱が重ならなければ交差しない(最も安い棄却)
② 一方の曲面を包む平行 2 平面(FAT 平面)を作り、他方からその平面への
符号付き距離 f(u,v)=n·S(u,v)−d を考える。有理曲面では f は分子 N=n·X−d·W
(制御点について線形)を分母 W(常に正)で割った形になるので、f の符号や
帯 [lo,hi] への出入りは分子だけで判定できる(重み wij を掛けた
制御係数 wij(n·Pij−d) を使うだけで、非有理のときと
同じ次数のベジエ関数のまま扱える)。凸包性より、帯に入り得ない UV 範囲を
確実に削り落とせる。
曲線どうしの交点計算で使う FAT Line の曲面版にあたります。
捨てられなければ大きい方を 4 分割して再帰し(有理デ・カステリョによる厳密な
部分曲面の分割)、両者が十分平坦になった末端で平面どうしの交線を線分として
取り出します。
NURBS化について: ドーナツ・楕円体・円柱は、円弧を厳密に表す
有理2次ベジエ(3制御点・重み 1, cosΔθ/2, 1)を土台に、母線方向×回転方向の
テンソル積(回転体のNURBS化アルゴリズム)で構成しています。楕円体は単位球の
NURBSを (rx,ry,rz) でアフィン拡大縮小したものです。曲面Bもダブルクリックで
制御点の重みを編集でき、有理ベジエとして扱えます。
「非有理とみなす判定」をONにすると、全ての重みを1とみなして
(=制御点の位置だけを使う旧来の非有理ベジエクリッピングと同じ計算で)
交差を求めます。OFFなら実際の重みを使った厳密な有理ベジエクリッピングです。
同じ形状のまま ON/OFF を切り替えると、重みを無視した近似計算がどれだけ
交差線をずらすかを比較できます。