Bスプライン曲線(ベジエ分解済み)と線分
Bスプライン曲線(全体)
選択中セグメントの曲線/ベジエ制御多角形
Bスプライン制御点 Pi(元の制御多角形は破線)
線分端点 A, B
線分と曲線の交点(有効な交差)
セグメント境界(ノット位置)
制御点が6点以上の3次Bスプライン曲線(クランプ一様ノットベクトル、重みなしの非有理曲線)を、 Boehmのノット挿入アルゴリズム(各内部ノットの重複度を次数 p=3 まで引き上げる)によって 複数の3次ベジエ曲線(セグメント)に厳密分解します。各セグメントは4個の制御点を持つ3次ベジエです。 線分(黒い実線・端点はドラッグ可能な青四角)とBスプライン曲線の交差は、各セグメントごとに 「制御点から線分を含む直線への符号付き距離」を表す3次のスカラー・ベジエ関数 Num(t) を作り、 その根をベジエクリッピング法(制御多角形の凸包と y=0 の交差でtの区間を反復的に絞り込む二分法)で求め、 得られた t での曲線上の点が実際に線分の範囲内(媒介変数 s∈[0,1])にあるかどうかで判定しています。 下部のタブでセグメントを選ぶと、右側にそのセグメントの Num(t) と制御点の凸包が表示されます。 制御点(オレンジの丸)はドラッグで移動できます。