曲線 P(t) と 曲線 Q(s)
曲線 P(t)
制御点 Pi
曲線 Q(s)
制御点 Qj
最短点ペア
※ 制御点はドラッグで移動、ダブルクリックで重み編集
2 本の有理ベジエ曲線 P(t)(青、制御点はオレンジ)と Q(s)(紫、制御点は緑)の最短点を、 西田論文の 4.3 節の方法にしたがって求めます。最短点では、点 P(t) と Q(s) を結ぶベクトルが 両方の接線と直交します(式 12)。 qt(s,t) = P'(t)·(P(t)−Q(s)) = 0、 qs(s,t) = Q'(s)·(P(t)−Q(s)) = 0。 一方の曲線 Q(あるいは P)をその制御点で代表させると、qt は t の 有理曲線では (3n−1) 次のベジエ関数(分子のみで判定可)になります。 この関数の制御多角形の凸包と 0 との交差範囲で t の存在区間を絞り込み(クリッピング)、 縮んだ曲線 P の制御点で今度は qs を計算して s の区間を絞り込み、Q をクリップする ― という操作を交互に繰り返すと、2 曲線は微小な平行線分に収束します(図4)。 絞り込みが不十分(区間が 80% 以上残る)な場合はその曲線を 2 分割して両方を再帰的に処理し、 複数の極値(局所最短点)も検出します。右のパネルは (t, s) パラメータ空間でのクリッピング矩形の 収束の様子を示しています。