σ(t)・w(t)・dκ/dt の分子が「ベジエ関数のまま」扱える理由と、それが数値的判定(Bezier Clipping)に有利な理由をまとめる
曲率 $\kappa(t)$ とは、曲線が「その点でどれだけ急に曲がっているか」を表す量である。直線では $\kappa=0$、円では半径 $r$ の逆数 $\kappa = 1/r$ で一定になる——つまり曲率はその点に最もよくフィットする円(接触円・曲率円)の半径の逆数として理解できる。曲率が大きいほど鋭く曲がっており、小さいほど緩やかに(直線に近く)曲がっている。符号は曲がる向き(左に曲がるか右に曲がるか)を表す。
曲率が極値(局所的な最大・最小)を取る点は バーテックス(vertex) と呼ばれ、曲線の形状を特徴づける幾何学的に重要な点である。代表的な利用先は次のとおり。
つまりバーテックス検出とは、曲線のどこが「最もきつく」「最も緩く」曲がっているかを数学的に厳密に求める処理であり、それを高次のベジエ曲線に対しても安定に行うための手法が、本稿で解説する「σ・w・N をベジエ関数のまま扱う Bezier Clipping」である。
平面曲線 $C(t) = (x(t), y(t))$ の曲率は
$$ \kappa(t) = \frac{x'y'' - y'x''}{(x'^2 + y'^2)^{3/2}} = \frac{\sigma(t)}{w(t)^{3/2}} $$と表せる。ここで分子を $\sigma(t) = x'y'' - y'x''$、分母の中身を $w(t) = x'^2 + y'^2$ とおく。曲率の極値(バーテックス)は $\kappa'(t) = 0$ の点であり、商の微分公式から
$$ \kappa'(t) = \frac{\sigma' w - \tfrac{3}{2}\sigma w'}{w^{5/2}} $$となる。正則な曲線($C'(t) \ne 0$)では常に $w(t) > 0$ なので分母は零にならない。したがって
$$ \kappa'(t) = 0 \iff N(t) := \sigma'(t)\,w(t) - \tfrac{3}{2}\,\sigma(t)\,w'(t) = 0 $$という「有理式の根探索」問題は、分子 $N(t)$ だけの「多項式の根探索」問題に帰着する。問題はこの $N(t)$ をどう表現し、どう根を求めるかである。
$C(t)$ が $n$ 次ベジエ曲線であれば、$x(t), y(t)$ は Bernstein 基底で
$$ x(t) = \sum_{i=0}^{n} P_i^x\, B_i^n(t), \qquad B_i^n(t) = \binom{n}{i} t^i (1-t)^{n-i} $$と書ける。この表現には、σ・w・N を構成するために必要な3つの演算——微分・積・和差——がすべて「ベジエ関数の枠内で閉じている」という重要な性質がある。
$n$次ベジエ関数 $\{P_i\}_{i=0}^n$ の導関数は、$n-1$ 次のベジエ関数として厳密に表せる:
$$ \frac{d}{dt}\sum_{i=0}^n P_i B_i^n(t) = \sum_{i=0}^{n-1} n(P_{i+1}-P_i)\, B_i^{n-1}(t) $$つまり微分は制御点の「隣接差分×n」を取るだけの単純な線形操作で、近似ではなく厳密な次数 $n-1$ のベジエ関数を与える。
$m$次ベジエ関数 $\{a_i\}$ と $n$次ベジエ関数 $\{b_j\}$ の積は、$m+n$ 次のベジエ関数として厳密に表せる:
$$ \Big(\sum_i a_i B_i^m\Big)\Big(\sum_j b_j B_j^n\Big) = \sum_{k=0}^{m+n} c_k B_k^{m+n}(t), \qquad c_k = \sum_{i=\max(0,k-n)}^{\min(k,m)} \frac{\binom{m}{i}\binom{n}{k-i}}{\binom{m+n}{k}}\, a_i b_{k-i} $$これは近似でも数値的な当てはめでもなく、Bernstein基底同士の積 $B_i^m(t)B_j^n(t) = \frac{\binom{m}{i}\binom{n}{j}}{\binom{m+n}{i+j}}B_{i+j}^{m+n}(t)$ という代数恒等式から直接導かれる厳密な等式である。
σ と w のように次数が異なるベジエ関数を足し引きするには、低い方を目標次数まで次数上げすればよい。$n$次から $n{+}1$次への次数上げは
$$ Q_i = \frac{i}{n+1}P_{i-1} + \Big(1-\frac{i}{n+1}\Big)P_i, \qquad i = 0,\dots,n+1 $$で与えられ、これは同じ曲線を表す、次数が異なる制御点表現に過ぎない(曲線としては1点も動かない)。したがって次数を揃えたあとの加減算 $A_i \pm B_i$ も厳密である。
$C(t)$ が $n$ 次のとき、上記の閉包性を使って各関数の次数を積み上げると次のようになる。
| 関数 | 定義 | 次数 | 根拠 |
|---|---|---|---|
| $x', y'$ | 1階微分 | $n-1$ | 微分で次数 $-1$ |
| $x'', y''$ | 2階微分 | $n-2$ | 微分で次数 $-1$ |
| $\sigma = x'y''-y'x''$ | 曲率の分子 | $2n-3$ | $(n-1)+(n-2)$、積で次数加算 |
| $w = x'^2+y'^2$ | 速度の2乗 | $2n-2$ | $(n-1)+(n-1)$ |
| $\sigma'$ | σの微分 | $2n-4$ | 微分で次数 $-1$ |
| $w'$ | wの微分 | $2n-3$ | 微分で次数 $-1$ |
| $\sigma' w$ | N の第1項 | $4n-6$ | $(2n-4)+(2n-2)$ |
| $\sigma w'$ | N の第2項 | $4n-6$ | $(2n-3)+(2n-3)$ |
| $N = \sigma'w - \tfrac{3}{2}\sigma w'$ | κ′の分子 | $4n-6$ | 両項が同次数なので和差もそのまま同次数 |
2つの項がちょうど同じ次数 $4n{-}6$ に揃う点が構造として美しい。この $N(t)$ は $[0,1]$ 上で定義された「ただのベジエ関数」なので、あとはその実根を $[0,1]$ の中から探せばバーテックスが求まる——これが Bezier Clipping の入力になる。
Bernstein基底は $B_i^n(t) \ge 0$ かつ $\sum_i B_i^n(t) = 1$($t\in[0,1]$)を満たす。したがって曲線上の任意の点は制御点の凸結合であり、必ず制御点が張る凸包の内部に収まる。
この性質により、ある関数値の 零点 を探すとき、「制御点の凸包が $y=0$ の軸と交差しない」ならば、その区間には絶対に根が存在しないことが保証される。逆に交差する場合は「根があるかもしれない範囲」を凸包と軸の交点として安全に切り出せる。この安全性(false negative が起きない)こそが Bezier Clipping の正当性の根拠である。
ベジエ曲線は、任意の直線に対する交差回数(符号変化の回数)が、制御多角形のそれを超えないという性質を持つ。今回の文脈で言えば、
$$ \#\{t\in[0,1] : N(t) = 0\} \;\le\; \#\{\text{制御点列 } N_0,\dots,N_{4n-6}\text{ の符号変化の回数}\} $$が成り立つ。つまり制御点の符号を見るだけで「根の個数の上限」が分かる。これにより Bezier Clipping は根を見逃すことなく(完全性)、かつ余計な区間を延々調べ続けることもない(効率性)。
| 冪基底 $1,t,t^2,\dots$ | Bernstein基底 $B_i^n(t)$ | |
|---|---|---|
| 基底関数の符号 | 正負が混在 | 常に非負($[0,1]$上) |
| 係数の意味 | 幾何学的意味を持たない | 制御点=曲線上の目安点 |
| 高次での挙動 | 係数が急激に増大し桁落ちしやすい | 係数(制御点座標)は曲線のスケールのまま |
| 評価法 | Hornerでも丸め誤差が蓄積 | de Casteljau法は凸結合の繰り返しで安定 |
$N(t)$ は次数 $4n-6$ にもなるため、これを冪基底 $\sum c_k t^k$ に展開すると係数 $c_k$ の大きさが桁違いに暴れ、根の近くで桁落ち(catastrophic cancellation)が起きやすい。Bernstein基底のまま扱えば、係数(=制御点)は常に元の曲線と同じ物理的スケールに収まり、de Casteljauの評価も凸結合の繰り返しにすぎないため数値的に安定する。
Bezier Clippingでは絞り込んだ区間 $[a,b]\subset[0,1]$ 上の関数を、再び同じ次数のベジエ制御点列として厳密に取り出す必要がある。de Casteljauのアルゴリズムによる分割
$$ [\,P_0,\dots,P_n\,] \xrightarrow{\ t\ } [\,\text{左半分}\,],\ [\,\text{右半分}\,] $$は近似を含まない厳密な再パラメータ化であり、これを繰り返すことで「区間をどれだけ狭めても表現の精度が落ちない」という反復アルゴリズムに適した性質が得られる。