曲線と曲線の交差:FatLine + ベジエクリッピング法

赤系=曲線A(制御点:赤丸)、青系=曲線B(制御点:青丸)。どちらもドラッグ可能。
一方の曲線Qの制御点を包む2本の平行線(FatLine, d∈[dmin,dmax])で他方の曲線Pをクリップして短くし、 今度は短くなったPのFatLineでQをクリップする…という操作を交互に反復して、両者のパラメータ区間を交点へ収束させます。
サブパネルで「次のステップ」を押すと、その回に使われているFatLineの2平行線(紫破線)と、 処理中の各曲線の区間(太線ハイライト)がこのメインキャンバス上にも表示されます。

曲線A制御点 曲線B制御点 交点 A側最近点 B側最近点 ステップ中のFatLine

距離関数 D(t) と FatLine(2本の境界線)

その回にクリップされる側の曲線の制御点を、もう一方の曲線が作る基線からの符号付き距離に変換したベジエ関数 D(t)(青線)と、 その制御多角形(橙)・凸包(緑破線)を表示します。紫破線の2本が相手曲線のFatLineの上限 d=dmax・下限 d=dmin。 「次のステップ」を押すたびに、凸包がこの帯(2本の線の間)と重なる範囲だけにパラメータ区間をクリップし、 次は相手側の番に交代しながら収束するまで反復します。

D(t) 制御多角形 凸包 FatLine上限/下限 ■ 橙帯=クリップ結果 収束点