やコンピュータグラフィックスにおいて、複合ベジェ曲線(ふくごうベジェきょくせん、英語: composite Bézier curve)またはベジェスプライン(英語: Bézier spline)とは、複数のベジェ曲線から構成されるスプラインであり、少なくとも 連続である。 言い換えれば、複合ベジェ曲線とは一連のベジェ曲線であり、各曲線の終点が次の曲線の始点と一致するように端から端まで連結されている。 用途によっては、より高度な滑らかさ(例えば または の連続性)を求められる場合もある 。
連続した複合ベジェ曲線は、に似ていることから、ポリベジェ(英語: polybézier)とも呼ばれる。ただし、ポリラインでは点同士が直線で結ばれるのに対し、ポリベジェでは点同士がベジェ曲線で結ばれる。 ベジェゴン(またはベジゴン、英語: béziergon または bézigon)は、ベジェ曲線で構成された閉じたパスである。 複数の頂点を線で結ぶという点でポリゴンに似ているが、ポリゴンでは頂点が直線で結ばれるのに対し、ベジェゴンでは頂点がベジェ曲線で結ばれるMicrosoft polybezier APIPapyrus béziergon API reference"A better box of crayons". InfoWorld. 1991.。 「ベジェスプライン」は、 連続の複合ベジェ曲線の呼称に用いられる場合がある が、 (複合ではない)ベジェ曲線の呼称に用いられることもある。後者で複合の場合は、「複合」を前に付けて「複合ベジェスプライン」と表現される。
おそらく、複合ベジェ曲線の最も一般的な用途は、PostScriptやPDFファイル内の各文字のアウトラインを記述することである。 こうしたアウトラインは、開いた文字 穴がない文字。C、E、F、G など。参照::en:Typeface anatomy、:en:Counter (typography) では1つのベジェゴンで、閉じた文字 穴がある文字。A、B、D、O など。 では複数のベジェゴンで構成される。 PostScript、Asymptote、Metafont、OpenType、SVGなどの現代のベクターグラフィックスやコンピュータフォントシステムでは、3次ベジェ曲線からなる複合ベジェ曲線が、曲線形状を描画するために使用されている。
滑らかな接続
一般的に、スプラインに求められる性質は、各曲線同士が所定のパラメトリックあるいは幾何学的連続性で接続されることである。 スプライン内の個々の曲線は、それぞれの定義区間内では 連続を満たしているが、曲線同士の接合部では、常に何らかの不連続性が生じる。
ベジェスプラインはこの点においてやや特異で、 を上回る連続性を保証しない数少ないスプラインのひとつである。 ただし、制御点の配置によって、接合部での連続性の度合いを保証することは可能である。しかし、ベジェスプラインの指定された次数に対して制約が厳しすぎる場合、局所的な制御性が失われる可能性がある。
3次ベジェ曲線の滑らかな接続 制御点が と である2つの3次ベジエ曲線の、点 での連続性が確保されるための条件は、次のように定義される:
(位置の連続性):曲線が同じ点で接続されていれば良く、これはすべてのベジェスプラインが定義上、満たしている。この例では、両曲線は を共有している。 (速度の連続性):接続点に隣接する制御点が互いに対称である必要がある。すなわち、次の条件を満たす必要がある: (接線の連続性):接続点と、隣接する制御点が共線である必要がある。これは よりも緩い条件で、スカラー を使用してパラメータ化できる自由度がある。次のように表現される:
以下の連続性の条件も理論上は可能だが、B-スプラインやβ-スプライン
などの他のスプラインが、局所制御性を損なうことなくより高い制約を自然に扱えるため、3次ベジェスプラインではほとんど使用されない。
(加速度の連続性):次の条件を満たす必要がある:ただし、この制約を3次ベジェスプライン全体に適用すると、接続点の局所制御性が連鎖的に失われる。曲線がスプラインの3点ごとに1点を通過することは保証されるが、形状の制御が困難になる。3次曲線を使用して 連続性を実現するには、代わりに3次一様B-スプラインを使用することが推奨される。これにより、局所制御性を維持しつつ 連続性を保証できるが、指定された点を通過する保証はなくなる。 (曲率の連続性):次の条件を満たす必要がある:これは に比べて、2つのスカラー と による2つの自由度を残している。より高度な幾何学的連続性も可能であるが、計算と制御は複雑になる。 (衝撃の連続性):次の条件を満たす必要がある:この制約を3次ベジェスプラインに適用すると、局所制御性が完全に失われ、スプライン全体が最初の曲線の制御点によって完全に決まってしまう。実際、これはもはやスプラインとは言えず、最初の曲線を無限に外挿した形状に等しくなり、個々の曲線の接続がなくなることで どころか の連続性を持つことになる。
連続性の条件式の導出 による3次ベジェ曲線を 、 による3次ベジェ曲線を とする。
の終了点()と、 の開始点()における導関数は以下の通り。
したがい、 であれば 連続であり、 さらに、 であれば 連続である。 これらから、上記 および の条件式が得られる。
また、曲線の 連続性の定理DeRose (1985), pp.15-19により、
であれば 連続である。さらに、
であれば 連続である。 これらから、上記 および の条件式が得られる。
円弧の近似 特定の環境で円弧のプリミティブがサポートされていない場合、ベジェ曲線で近似することができる 。 一般的に、円を近似するには8つの2次(曲線)セグメント、または4つの3次セグメントが使用される。 与えられた数の3次セグメントによる近似誤差が最小となる、制御点の長さ を求めることを目指す。
4つの曲線を使用 第一象限の90度の単位円弧のみを考慮して、端点 と 、および制御点 と を次のように定義する:
3次ベジェ曲線の定義から次の式が得られる:
ポイント を円弧の中点とすると、次の2つの方程式を立てることができる:
これらの方程式をx座標について(y座標についても同様に)解くと、次のようになる:
ただし、結果として得られるベジェ曲線は円の外側に完全に出ており、半径の最大偏差は約0.00027である。 中間点に小さな補正:
を加えることで、半径の偏差は、およそ3分の1に減少して 0.000068 になる(近似円曲線の端点における微分可能性が犠牲になる)。
一般的なケース 半径 の円は、任意の数の3次ベジェ曲線で近似することができる。 円弧の始点は点 、終点は点 とし、これらの点はx軸を挟んで上下対称の位置に配置され、円弧がなす角度は とすると:
制御点は次のように表記できる :
例
フォント TrueTypeフォントでは、2次ベジェ曲線(2次曲線)で構成される複合ベジェ曲線が使用されている。 一般的な書体デザインをコンピュータフォントとして一定の精度で表現するには、3次ベジェ曲線の方が2次ベジェ曲線よりもデータ量が少なく、さらに3次ベジェ曲線は一連の直線よりもデータ量が少なくなる。 これは、直線の1セグメントに必要なデータ量が放物線の1セグメントに必要なデータ量よりも少なく、さらに放物線の1セグメントに必要なデータ量が3次曲線の1セグメントに必要なデータ量よりも少ない場合であっても当てはまる。
複合ベジェ曲線の作図
3次ベジェ曲線からなる3次の複合ベジェ曲線は複雑な図形を描くためによく実利用されるため、様々な作図法が考案されている。またベジェ曲線の数学的理解無しで直感的に複合ベジェ曲線を描くために、いくつかの用語がしばしば導入されている。
アンカーポイント アンカーポイント()はセグメント端点にある制御点の別名である"頂点は、パスの各セグメントの開始点と終了点です。他の Adobe アプリケーションでは、頂点のことをアンカーポイントまたはパスポイントと呼ぶ場合もあります。" Adobe. ベクトルグラフィックとラスター画像について. After Effects ユーザーガイド. 2024-10-13閲覧.。頂点()、パスポイント()、通過点とも"[3次ベジェ]は、複数の通過点と方向点で構成される曲線を描画できます。... 1つ目の曲線を終了したい位置からドラッグを開始すると、ドラッグの開始位置に通過点が作成される" CLIP STUDIO PAINT. 連続曲線サブツール・ベジェ曲線サブツール. User Guide. 2024-10-13閲覧.。端点と端制御点の一致特性により、ベジェ曲線はアンカーポイント間を繋ぐ曲線とみなせる。セグメントが通らない制御点(=方向ハンドル)との区別を直感的にするためにこの用語が導入されている。
方向ハンドル はセグメント端点の隣にある制御点の別名である。方向点とも"[3次ベジェ]は、複数の通過点と方向点で構成される曲線を描画できます。... 方向点が表示されます。マウスを動かすと曲線の曲がり具合を調整できます。曲線の位置を決めたらマウスのボタンを離します。" CLIP STUDIO PAINT. 連続曲線サブツール・ベジェ曲線サブツール. User Guide. 2024-10-13閲覧.。方向線の先端に位置する。アンカーポイントと区別することで直接曲線は通らないが曲がり方を決定づけるということを直感的に理解できる。
方向線 はセグメント端点から隣の制御点へ伸びる直線である"各頂点の方向線(すなわち接線)" Adobe. ベクトルグラフィックとラスター画像について. After Effects ユーザーガイド. 2024-10-13閲覧.。3次ベジェ曲線では端点での接線ベクトルが隣の制御点へ伸びるベクトルと同じ向きであるため(詳細: 3次ベジェ曲線)、方向線の概念を導入すれば端点での傾きと隣接制御点(=方向ハンドル)の位置を同時に視認できる。
アンカーポイントと方向線による滑らかさ制御 複合ベジェ曲線は滑らかさの保証に制約を要する(⇒3次ベジェ曲線の滑らかな接続)。これは各アンカーポイントから伸びる2つの方向線のあいだにどのような制約を課すかで表現できる。
方向線が左右対称であれば接線が一致するため必ず滑らかになる。この制約が課されたアンカーポイントはスムーズポイント()"スムーズポイントでは、パスセグメントは連続する曲線として連結されます。つまり、入ってくる方向と出て行く方向が同じ線上にあります。... スムーズポイントで方向線を移動すると、ポイントの両側の曲線が同時に調整されます。" Adobe. ベクトルグラフィックとラスター画像について. After Effects ユーザーガイド. 2024-10-13閲覧.、設定そのものはシンメトリック()"Krita has several node-types that allow you control the side handles more efficiently. These are the corner, smooth and symmetric modes. ... Symmetric ... the symmetric node will force handles to always point in opposite directions and have the same length." Krita. Tools » Shape Edit Tool. Krita Reference Manual. 2024-10-13閲覧.、曲線"通過点の状態を角と曲線のいずれかに変更できます。... 通過点を曲線にすると、2つの方向点が連動した状態で操作できます。" CLIP STUDIO PAINT. 連続曲線サブツール・ベジェ曲線サブツール. User Guide. 2024-10-13閲覧.、スムーズ()"smooth curveto ... Draws a cubic Bézier curve from the current point ... The first control point is assumed to be the reflection of the second control point on the previous command relative to the current point." 以下より引用。 などと呼称される。
多くのソフトウェアでは「mousedown でアンカーポイント設定、drag で方向ハンドル調整、mouseup で確定」を繰り返すことで滑らかな複合ベジェ曲線を作図できる。2ハンドルの連動(smooth 状態)を alt で切り離す、といった操作もしばしば実装されている。
画像から複合ベジェ曲線への変換
フォントやロゴデータの作成、紙図面からのCADデータ逆生成など、多くの場面で画像からベクターデータへの変換が行われる。 変換にはAdobe Illustratorなどの商用ソフトウェアのほか、AutoTrace
や などのオープンソースソフトウェアも利用される 例:。 以下は、AutoTraceを用いたEPSへの変換例で、画像の輪郭が複数の3次ベジェ曲線と直線から成る図形表現に変換されている。 ベジェ曲線間の接続はおおむね滑らかだが、急峻な屈曲ではそうならない場合もある。
入力画像 変換出力(図形表現のみ抜粋) プロット/bd { bind def } bind def /m { moveto } bd /l { lineto } bd /c { curveto } bd /f { closepath F } bd 10 33 m 69 12 l 69.001 22.404 73.966 29.253 75.671 39 c 77.152 47.465 74.308 54.539 77.615 63 c 81.189 72.144 92.085 83.964 90 94 c 73.095 89.729 64.067 70.828 48 64.999 c 36.198 60.718 35.831 77.911 27.042 79.079 c 22.311 79.707 21.762 71.011 20.783 68 c 19.157 62.996 15.176 59.040 13.843 54 c 12.046 47.209 12.019 40.076 10 33 c f
脚注
訳注
出典
関連項目 ベジェ曲線 B-スプライン曲線 スプライン曲線 滑らかな関数