Loading AI tools
ウィキペディアから
以下の要素を所与とする:
これらを用いて 次ベジェ曲線 は複数の表現により定義される。以下はその一例である。
バーンスタイン基底関数 を用いて、 次ベジェ曲線は以下のように定義される[1]:
ベクトル に関する漸化式を以下のように定義する:
この漸化式を用い 次ベジェ曲線は で定義される[4]。
このアルゴリズムはド・カステリョのアルゴリズム(英: De Casteljau's algorithm)と呼ばれる。
N 次ベジェ曲線の始点は端の制御点 と、終点はもう一方の端の制御点 と一致する。
バーンスタイン基底関数は , である(⇒バーンスタイン多項式#バーンスタイン基底関数の特性)。よってベジェ曲線を構成する殆どの項は端点において 0 となり , となる。つまり始点 が と、終点 が と一致する。
ベジェ曲線は制御点座標の加重平均と見做せる。
バーンスタイン基底関数は常に和が1であり(⇒バーンスタイン多項式#1の分割)[5]、かつ において非負である(⇒バーンスタイン多項式#区間非負)。よってベジェ曲線上の点 P(t=T) は各制御点 Bi が Jn, i(T) で重みづけされた加重平均と見做せる[6][5]。この意味で各バーンスタイン基底関数は混合比とも呼ばれる[5]。
ベジェ曲線の端点を除いた領域は、その座標が全ての制御点の座標から影響を受ける。
ベジェ曲線は制御点座標の加重平均であり(⇒#制御点の加重平均)、その重みであるバーンスタイン基底関数は において常に正である(⇒バーンスタイン多項式#区間正値)。よって端点以外では全制御点の座標が大なり小なり曲線の各点へ反映されている。端点は例外であり、単一制御点の座標のみで決定される。
ベジェ曲線は一般には両端以外の制御点は通らない。
ベジェ曲線の制御点の加重平均特性により、制御点を必ず通る t = T が存在するなら Jn, i(T) が i = I で 1、他で 0 になる点があるはずである。図からわかるように、これは t = 0 or 1 のみに限られる。よって一般にはベジェ曲線は両端以外の制御点を通らない。制御点の座標によっては加重平均がたまたまある制御点と一致する場合がありうるので、制御点を通るのが常に両端のみ、というわけではない。
ベジェ曲線は制御点の数に基づいて分類される。以下はその一例である。
2次ベジェ曲線は次の式で定義される[7]:
上式よりベジェ曲線の性質を満たすことが容易に確認できる。t の次数より2次ベジェ曲線は高々2次の曲線であると確認でき、代入によりP(0) = B0 と P(1) = B2 で両端制御点の通過が確認できる。
3次ベジェ曲線は次の式で定義される:
上式よりベジェ曲線の性質を満たすことが容易に確認できる。t の次数より3次ベジェ曲線は高々3次の曲線であると確認でき、代入による P(0) = B0 と P(1) = B3 で両端制御点の通過が確認できる。
P(t) を t で1階微分し端の制御点を代入することで、端点での接線ベクトルが求まる。これにより、
となり、端点とその隣の制御点で端点の接線が定まることがわかる[9]。
前節の数式を適宜変形するなどして、コンピュータプログラムに実装すれば描画はできるわけだが、以下では3次のベジェ曲線(4個の制御点で示される曲線)を例として、手作業を念頭に置いた作図法を示す。この手順を基にした描画プログラムにも有用性があり、また人によってはベジェ曲線の性質を直観的に把握するにも有効かもしれない。
右図の P0, P1, P2, P3 が与えられた制御点である。今、ベジェ曲線の P0 から t (0 < t < 1) の比率の位置の点の座標を求めるためには、次のように計算すればよい。
複合ベジェ曲線(英: composite Bézier curve)はベジェ曲線を1つのセグメントとして複数セグメントを直列に接続した曲線である[注 1]。ベジェスプライン(英: Bézier spline)[10]、ポリベジェ曲線(英: polybezier)とも。
N次ベジェ曲線は次数を変えずに延長できない。なぜなら延長のために制御点を追加することで次数も増加するからである。またN次ベジェ曲線は既存区間に影響を与えずに延長できない。なぜなら全制御点の反映という特性により新しい制御点座標が既存の区間にも反映されるからである。
これに対する方策にはスプライン曲線をはじめとした区分多項式がある。区分多項式ではある区間を1つの多項式で表現し、その続きの区間を別の多項式で表現し、曲線全体を複数の多項式で構成する。新しい区間の多項式は既存区間と独立しているため、上記の次数増や既存区間影響の問題を回避できる[10]。これを採用し、ベジェ曲線で各区分を表現した区分多項式が composite Bézier curve である。
composite Bézier curve はセグメント間の連結に関して制約を置いていない。ゆえに composite Bézier curve 一般には連続性や滑らかさに関する保証がない[11]。これはスプライン曲線・B-スプライン曲線との違いである。一方で適切な制約を課すことで連続性や滑らかさが保証された composite Bézier curve のサブタイプを見出すことができる。
composite Bézier curve の連続性はセグメントの終点制御点と隣接セグメントの始点制御点を共有する制約により保証できる[12]。これは端点と端制御点の一致特性より明らかである。
composite Bézier curve の滑らかさはセグメント間で端点での接線を共有する制約により保証できる[13]。これはパラメータに対する一階微分が端点で一致することと等しい[13]。
3次ベジェ曲線からなるポリベジェ曲線は複雑な図形を描くためによく実利用されるため、様々な作図法が考案されている。またベジェ曲線の数学的理解無しで直感的にポリベジェ曲線を描くために、いくつかの用語がしばしば導入されている。
アンカーポイント(英: anchor point)はセグメント端点にある制御点の別名である[14]。頂点(英: vertex)、パスポイント(英: path point)、通過点とも[15]。端点と端制御点の一致特性により、ベジェ曲線はアンカーポイント間を繋ぐ曲線とみなせる。セグメントが通らない制御点(=方向ハンドル)との区別を直感的にするためにこの用語が導入されている。
ポリベジェ曲線は滑らかさの保証に制約を要する(⇒#滑らかさの保証)。これは各アンカーポイントから伸びる2つの方向線のあいだにどのような制約を課すかで表現できる。
方向線が左右対称であれば接線が一致するため必ず滑らかになる。この制約が課されたアンカーポイントはスムーズポイント(英: smooth point)[18]、設定そのものはシンメトリック(英: symmetric)[19]、曲線[20]、スムーズ(英: smooth)[21][19] などと呼称される。
多くのソフトウェアでは「mousedown でアンカーポイント設定、drag で方向ハンドル調整、mouseup で確定」を繰り返すことで滑らかなポリベジェ曲線を作図できる。2ハンドルの連動(smooth 状態)を alt で切り離す、といった操作もしばしば実装されている。
ベジェ曲線は様々な目的・用途に利用されている。
具体的には、ベジェ曲線は視覚芸術(絵画・アニメ・3DCGなど)に利用され、輪郭線の直接表現(参考: ドローソフト)、手書き線の補正[注 2](参考: ペイントソフト)、物体配置の補助線などとして用いられる。またフォント・カリグラフィー・タイポグラフィに利用される。工業デザインでも利用され、設計図中の物体を表現する曲線として直接表現される。GUIではグラフ型設定値の表現として用いられる。
ベジェ曲線のなかでも2次ベジェ曲線と3次ベジェ曲線は広く利用されている。特に3次ベジェ曲線は、始点と第1制御点を結ぶ線分が始点における曲線の接線になり、第2制御点と終点を結ぶ線分が終点における曲線の接線になるため、直感的に理解しやすく多用される。
ベジェ曲線は様々なプラットフォームでサポートされている。
PostScriptやそのフォント (Type1フォント)、SVGやHTML5のcanvasで3次ベジェ曲線を利用できる。Microsoft WindowsのGDI/GDI+、Direct2D、.NET FrameworkのSystem.Drawing.Drawing2D.GraphicsPath
、WPFのSystem.Windows.Media.BezierSegment
では3次ベジェをサポートする[22][23][24][25][26]。AWT(Java 1.2以降で追加されたQuadCurve2D
, CubicCurve2D
の派生クラス)、SkiaのSkPath
およびAndroidのandroid.graphics.Path
は2次と3次のベジェ両方をサポートする[27][28][29]。
ベジェ曲線はフランスの自動車メーカー、シトロエン社のド・カステリョ とルノー社のピエール・ベジェにより独立に考案された。ド・カステリョの方が先んじていたが、その論文が公知とならなかったためベジェの名が冠されている[30]。
原語(フランス語)における Bézier の発音はベズィエに近く、「ベジェ曲線」より「ベジエ曲線」の方がこれに忠実と言えるが、いずれの呼称も用いられている。
ベジェ曲面(曲面パッチなどとも)と呼ばれるような、3次元空間内の曲面への拡張にはいくつか手法がある。たとえば、目的の曲面においてパッチの端点となる3点とその3点における接平面を指定するという方法や、4点を指定し2方向のクロスハッチングのようにして面を構成するという方法がある。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.