多様なパラメトリック曲線への
ベジエクリッピング法の適用

1.本手法が要求するもの

ベジエクリッピング法が対象に要求するのは、ただ一点、ベルンシュタイン基底で表せることだけである。

したがって、対象がもともとベジエ曲線である必要はない。変換さえできれば、曲線の出自は問わない。

この視点に立つと、本手法は「ベジエ曲線専用の手法」ではなく、広範なパラメトリック曲線に適用できる汎用の求解法と位置づけられる。本稿では、どの曲線がどのように変換でき、変換後に判定関数がどのような次数になり、どう解くのかを整理する。

変換の行き先は次の3通りに分かれる。

行き先対象保証
多項式ベジエ曲線べき級数、エルミート、Catmull-Rom、B-スプライン など厳密
有理ベジエ曲線円弧・楕円弧・双曲線、NURBS、透視投影像、PH曲線のオフセット厳密
区分ベジエ近似クロソイド、インボリュート、螺旋、一般のオフセット など近似(誤差を許容値に繰り込めば安全側)

さらに、パラメータ表示を持たない陰関数曲線も、2変数バーンスタイン形式に変換すれば同じ枠組みに乗る(第6章)。

2.多項式ベジエ曲線への変換

2.1 べき級数からの変換

n 次多項式 f(t) = Σ aᵢtⁱ を区間 [0,1] 上でベルンシュタイン基底に表す。

f(t) = Σj=0n bj Bjn(t) , Bjn(t) = C(n,j) tj(1−t)n−j  (1)
bj = Σi=0j C(j,i) / C(n,i) · ai  (2)

行列を1回かけるだけで、次数は変わらない。曲線 C(t) = (x(t), y(t)) の各成分に適用すれば、任意の多項式パラメトリック曲線がベジエ曲線になる。

2.2 主要な曲線の変換

元の表現変換方法変換後
べき級数 Σaᵢtⁱ式 (2) の基底変換n 次ベジエ
エルミート曲線(2点+接ベクトル)線形変換3 次ベジエ
Catmull-Rom、Cardinal スプライン基底変換行列区分3次ベジエ
Kochanek-Bartels(TCB)曲線接ベクトルを求めてエルミート経由区分3次ベジエ
ラグランジュ/ニュートン補間多項式基底変換n 次ベジエ
Chebyshev、Legendre 展開基底変換n 次ベジエ
B-スプライン曲線ノット挿入(Böhm 法)による分解区分 n 次ベジエ
CG のイージング曲線もともと3次ベジエ3 次ベジエ

B-スプラインからの変換は、各ノットの重複度を次数まで引き上げるノット挿入により行う。この操作は制御点の凸結合のみで構成されるため数値的に安全であり、べき級数からの変換のような桁落ちが生じない。NURBS を扱う際はこの経路を使うのが定石である。

2.3 曲面上の曲線

n 次曲面 S(u,v) 上で (u,v) が m 次ベジエ曲線をたどるとき、合成 S(u(w), v(w)) は関数合成により厳密に nm 次のベジエ曲線になる。双3次曲面上の3次曲線なら 9 次である。トリム曲線を空間曲線として扱う場合などに用いる。

3.有理ベジエ曲線への変換

n 次有理ベジエ曲線は次式で表される。

P(t) = N(t) / W(t) , N(t) = Σ wkPkBkn(t) , W(t) = Σ wkBkn(t)  (3)

N(t) はベクトル値、W(t) はスカラー値でいずれも n 次であり、重み wk > 0 のとき W(t) > 0 である。

3.1 円錐曲線

円弧・楕円弧・放物線・双曲線は、すべて2次有理ベジエで厳密に表せる。開き角 θ の円弧の場合、両端の接線の交点を中間制御点とし、重みを

w0 = 1 , w1 = cos(θ/2) , w2 = 1  (4)

とすればよい。w1 < 1 が楕円、= 1 が放物線、> 1 が双曲線に対応する。

P0 w=1 P1 w=cos(θ/2) P2 w=1 中心 円弧(厳密表現) 開き角 θ=110° の円弧は、重み w=cos(θ/2)=0.574 の 2 次有理ベジエで厳密に表せる
円弧の2次有理ベジエ表現。両端の接線の交点を中間制御点とし、重みを cos(θ/2) とすれば厳密に一致する。

この事実は実務上大きい。CAD 図面に現れる円弧・楕円弧・フィレットは、近似なしにそのまま本手法の対象になる。「自分のデータを変換しても形が変わらない」ことが保証される。

3.2 その他の厳密変換

元の表現変換方法変換後
円弧・楕円弧・双曲線式 (4) の重み2 次有理ベジエ
NURBS 曲線ノット挿入による分解区分 n 次有理ベジエ
射影変換された曲線同次座標での線形変換有理ベジエ
透視投影された空間ベジエ曲線同次座標の除算をそのまま重みとする2次元の n 次有理ベジエ
PH曲線のオフセット|C′(t)| が多項式であることを利用有理ベジエ
らせん状の一部(有理らせん)有理パラメータ化有理ベジエ

透視投影の項は、3次元の曲線を画面上で扱う際に近似が不要になることを意味する。ピッキング、シルエット、2次元での交差判定が、投影後も厳密に行える。

PH曲線(ピタゴラス・ホドグラフ曲線)は |C′(t)| が多項式になるよう設計された曲線族である。このクラスではオフセット曲線が有理ベジエとして厳密に表現でき、弧長も多項式になる。したがって、一般には近似を要する「オフセットのトリミング」や「弧長パラメータ化・等間隔点配置」が、PH曲線に限れば完全に厳密な枠組みで扱える。

4.判定関数の式と次数

変換後に解く問題は、いずれも「ベジエ関数の零点を求める問題」である。有理の場合は W(t) > 0 であるから、零点の判定は分子だけで行え、分子がベジエ関数である限り凸包性がそのまま成立する。主要な処理の判定関数と次数を示す。

処理判定関数(有理の場合は分子)非有理有理
多項式の解f(t)nn
導関数の解・極値f ′(t)n−12n−1
線分との交差n·P(t) − d (有理では n·N − dW)nn
線分との最近点上式の微分n−12n−1
点 Q との2乗距離|P(t) − Q|² (有理では |N − QW|²)2n2n
円との交差|P(t) − Q|² − r² (有理では |N−QW|² − r²W²)2n2n
距離関数の微分d/dt |P(t) − Q|²2n−12n−1
点との最近点P′(t)·(P(t) − Q)2n−13n−1
点からの接線(P(t) − Q) × P′(t)2n−13n−1
変曲点P′(t) × P″(t)2n−3高々 5n−3
曲率の極値σ′w − (3/2)σw′ (σ=P′×P″, w=|P′|²)4n−6高々 10n−6
曲線どうしの交差FAT Line による相互クリップnn
自己交差P(s) − P(t) = 0 (s < t)2 変数2 変数

有理の場合に次数が上がるのは、微分を経由する処理である。P′ = (N′W − NW′)/W² であるから、分子は 2n−1 次となり、これと N − QW(n 次)の積で 3n−1 次になる。W ≡ 1 とすれば非有理の 2n−1 次に戻り、整合する。

次数が上がっても、アルゴリズムは何も変わらない。係数の個数が増えるだけである。凸包判定は符号を見るだけ、クリップは制御点の最小最大を取るだけであり、次数が上がると計算量と数値的安定性の両面から破綻する終結式などの代数的手法とは対照的である。

5.ベジエクリッピングによる求解

変換が済めば、あとはすべて同一の手続きである。

5.1 凸包性

バーンスタイン基底は区間 [0,1] 上で非負であり、総和が 1 になる(1 の分割)。したがって

minj bj ≤ f(t) ≤ maxj bj  (5)

が成り立ち、より強く、f のグラフは制御点 (j/n, bj) の凸包に含まれる。これより2つの判定が導かれる。第1に、係数がすべて同符号ならその区間に零点は存在しない。第2に、制御多角形と t 軸との交点が、零点が存在し得る区間の外側の境界を与える。いずれも保証つきの判定であり、近似ではない。

残す区間(凸包と t 軸の交わり) 0 t=0 t=1 制御点 (j/n, b_j) と凸包 黒=多項式 f(t) 青=ベジエ係数の制御多角形 赤=実根 凸包の外に零点は存在しない
5次多項式をベジエ関数に変換した例。制御点の凸包が曲線を包むため、凸包と t 軸の交わりの外側には零点が存在し得ない。この範囲まで一気に区間を収縮できる。

5.2 手順

  1. 棄却 係数がすべて同符号ならば零点なしとして打ち切る。
  2. クリップ 制御多角形の凸包と t 軸との交わりから区間 [u₀, u₁] を求め、de Casteljau 法によりその区間へ制限する。この操作で解を失うことはない。
  3. 二分への切替 区間幅が十分縮小しない場合(収縮率がおおむね 0.8 を超える場合)は、複数の零点が含まれる可能性が高いため中点で二分する。
  4. 出力 区間幅が所要精度 ε を下回れば零点として出力する。

単根に対する収束次数は 2 であり、重根では 1 次収束に落ちるが、区間が保証つきで縮小するため解を見失うことはない。区間 [0,1] の全零点が重複なく列挙される点が、初期値依存のニュートン法との決定的な違いである。

5.3 曲線どうしの交差(FAT Line)

2曲線の交点は1変数の零点問題にならないため、別の形をとる。一方の曲線を包む平行2直線を FAT Line と呼ぶ。この帯の外では交点が存在し得ないので、他方の曲線のパラメータ範囲を収縮できる。役割を交互に入れ替えて反復すると交点へ収束する。

交点 曲線 P の FAT Line P(s) Q(t) t=0 t=1 残す区間 [t_min, t_max] P を包含する平行線帯(FAT Line)の外では交点は存在しない → Q の t 区間を収縮
FAT Line による曲線どうしの交点計算。曲線 P を包む帯の外では交点が存在しないので、曲線 Q のパラメータ範囲を収縮できる。

この考え方は次元を上げてもそのまま通用する。曲面どうしの交差では帯が平行2平面(FAT 平面)になり、動く物体の連続衝突検出では時刻を含む箱に対して同じ判定を行う。

6.陰関数曲線 — もう一つの経路

有理パラメータ化できない代数曲線(種数1以上のもの、たとえば楕円曲線)は、これまでの方法では扱えない。しかし陰関数表現なら別の道がある

f(x, y) = 0 という多項式を、着目する矩形領域上で2変数バーンスタイン形式に変換すれば、そのまま「2変数ベジエ関数の零集合を求める問題」になる。これは曲面の等値線抽出や輪郭線抽出と完全に同一の枠組みである。

結局、曲線は次のいずれかに必ず帰着する。

パラメトリック曲線 → ベジエ曲線に変換 → 1変数の零点問題(解は点)
陰関数曲線 → 2変数バーンスタイン形式に変換 → 2変数の零集合問題(解は曲線)

扱えないのは、フラクタル曲線、ノイズ関数による曲線、解析的表現を持たない実測データ曲線程度である。ただし最後のものは、近似すれば次章の枠に入る。

7.近似を要する曲線と、そのときの保証

次の曲線は厳密には有理表現できないが、区分ベジエ近似を挟めば扱える。

曲線主な分野
クロソイド(緩和曲線)道路・鉄道の線形設計
インボリュート歯車の歯形
サイクロイド、トロコイド機構設計、ローラーチェーン
螺旋(helix)、対数螺旋ねじ、カム
懸垂線、三角関数・指数関数の曲線構造、物理
一般(非PH)のオフセット曲線CAD 全般
曲面どうしの交差曲線ソリッドモデリング
数値解として得られる曲線(測地線、流線)解析、可視化
近似を挟むと、保証の対象が「近似後の曲線」に移る。
凸包性が保証するのは近似曲線に対する取りこぼしの無さであって、元の曲線に対してではない。したがって実務では、近似誤差 ε を上から評価し、判定の許容誤差に繰り込む必要がある。たとえば「距離が d 未満なら干渉」という判定なら d + ε で判定すれば、元の曲線に対しても保証が保たれる(安全側)。この一手間を入れれば、近似曲線であっても保証つきの手法として使える。

歯車のインボリュートやクロソイドは、区分3次ベジエで十分な精度が出ることが知られており、CAD では日常的に行われている変換である。

8.変換時の実務的な注意

数値的安定性

べき級数からベルンシュタインへの変換(式 (2))は条件数が悪く、高次では桁落ちが生じる。実験では、根が 0.02 間隔で密集した13次多項式まではほぼ 100 % の検出率が保たれたが、さらに密集させ次数を上げると検出率が低下した。次数が高い場合は区間を分割して低次の区分ベジエに分けるほうが安定である。

区分化はクリッピングにも有利

1本の長い高次曲線より、低次の区分ベジエ列のほうが凸包が締まって棄却がよく効く。数値的安定性と探索効率の両面から、区分化は望ましい。

B-スプライン経由の変換を優先する

ノット挿入は制御点の凸結合のみで構成されるため、数値的に安全である。データが NURBS や B-スプラインで与えられている場合は、べき級数を経由せずこの経路を使う。

9.まとめ

ベジエクリッピング法は「ベジエ曲線のための手法」ではない。ベルンシュタイン基底へ変換できるすべての曲線に適用できる汎用の求解法である。

多項式曲線は基底変換のみ、円錐曲線と NURBS は有理ベジエとして厳密に、その他は区分ベジエ近似として扱える。パラメータ表示を持たない陰関数曲線も、2変数バーンスタイン形式を経由して同じ枠組みに入る。

変換後は、処理ごとに判定関数の次数が変わるだけで、棄却・クリップ・分割・出力という手続きは完全に共通である。

実質的に、CAD・CG で用いられる曲線はほぼすべて射程内にある。とりわけ円弧が2次有理ベジエで厳密に表せること、および NURBS がノット挿入でベジエ分解できることの2点は、実務者にとって「手持ちのデータがそのまま使える」ことを意味する。