トップQs
タイムライン
チャット
視点
ベジェ曲線
ウィキペディアから
Remove ads
定義
要約
視点
以下の要素を所与とする:
- 次数:
- パラメータ:
- 制御点: 個のベクトル
これらを用いて 次ベジェ曲線 は複数の表現により定義される。以下はその一例である。
バーンスタイン表現
バーンスタイン基底関数 を用いて、 次ベジェ曲線は以下のように定義される[1]:
ド・カステリョのアルゴリズム
ベクトル に関する漸化式を以下のように定義する:
この漸化式を用い 次ベジェ曲線は で定義される[4]。
このアルゴリズムはド・カステリョのアルゴリズム(英: De Casteljau's algorithm)と呼ばれる。
陰関数表現
ベジェ曲線は、シルベスターやケイリーの方法により、陰関数(陰伏方程式) で表現できる[5]。
Remove ads
性質
要約
視点
端点と端制御点の一致
N 次ベジェ曲線の始点は端の制御点 と、終点はもう一方の端の制御点 と一致する。
バーンスタイン基底関数は , である(⇒バーンスタイン多項式#バーンスタイン基底関数の特性)。よってベジェ曲線を構成する殆どの項は端点において 0 となり , となる。つまり始点 が と、終点 が と一致する。
制御点の加重平均

ベジェ曲線は制御点座標の加重平均と見做せる。
バーンスタイン基底関数は常に和が1であり(⇒バーンスタイン多項式#1の分割)[6]、かつ において非負である(⇒バーンスタイン多項式#区間非負)。よってベジェ曲線上の点 P(t=T) は各制御点 Bi が Jn, i(T) で重みづけされた加重平均と見做せる[7][6]。この意味で各バーンスタイン基底関数は混合比とも呼ばれる[6]。
全制御点の反映
ベジェ曲線の端点を除いた領域は、その座標が全ての制御点の座標から影響を受ける。
ベジェ曲線は制御点座標の加重平均であり(⇒#制御点の加重平均)、その重みであるバーンスタイン基底関数は において常に正である(⇒バーンスタイン多項式#区間正値)。よって端点以外では全制御点の座標が大なり小なり曲線の各点へ反映されている。端点は例外であり、単一制御点の座標のみで決定される。
制御点の通過
ベジェ曲線は一般には両端以外の制御点は通らない。
ベジェ曲線の制御点の加重平均特性により、制御点を必ず通る t = T が存在するなら Jn, i(T) が i = I で 1、他で 0 になる点があるはずである。図からわかるように、これは t = 0 or 1 のみに限られる。よって一般にはベジェ曲線は両端以外の制御点を通らない。制御点の座標によっては加重平均がたまたまある制御点と一致する場合がありうるので、制御点を通るのが常に両端のみ、というわけではない。
Remove ads
分類
要約
視点
ベジェ曲線は制御点の数に基づいて分類される。以下はその一例である。
2次ベジェ曲線
2次ベジェ曲線は次の式で定義される[8]:
上式よりベジェ曲線の性質を満たすことが容易に確認できる。t の次数より2次ベジェ曲線は高々2次の曲線であると確認でき、代入によりP(0) = B0 と P(1) = B2 で両端制御点の通過が確認できる。
2次ベジェ曲線の行列形式
2次ベジェ曲線の陰関数表現
とすると、
となる。
2次ベジェ曲線の面積
曲線の始点と終点および原点で囲まれた領域の面積はガウスグリーンの定理[9]で求めることができる。
2次ベジェ曲線の分割[10]
ド・カステリョのアルゴリズムを用いて任意の で分割することができる。分割後の2曲線の制御点は と である。
2次→3次変換[11]
2次ベジェ曲線と等価な3次ベジェ曲線の制御点は である。
3次ベジェ曲線
3次ベジェ曲線は次の式で定義される:
上式よりベジェ曲線の性質を満たすことが容易に確認できる。t の次数より3次ベジェ曲線は高々3次の曲線であると確認でき、代入による P(0) = B0 と P(1) = B3 で両端制御点の通過が確認できる。
P(t) を t で1階微分し端の制御点を代入することで、端点での接線ベクトルが求まる。これにより、
となり、端点とその隣の制御点で端点の接線が定まることがわかる[13]。
3次ベジェ曲線の行列形式[14]
3次ベジェ曲線の陰関数表現
とすると、
となる。
3次ベジェ曲線の面積
以下は2つの3次ベジェ曲線 による と による の面積の例。 は制御点の並び順が原点に対し反時計回りなので面積は正の値、 は制御点の並び順が原点に対し時計回りなので面積は負の値になる。両者面積を合計することで閉包の面積が求まる。

3次ベジェ曲線の連続性
→詳細は「複合ベジェ曲線 § 3次ベジェ曲線の滑らかな接続」を参照
3次ベジェ曲線の分割
ド・カステリョのアルゴリズムを用いて任意の で分割することができる。分割後の2曲線の制御点は と である。
Remove ads
作図法

前節の数式を適宜変形するなどして、コンピュータプログラムに実装すれば描画はできるわけだが、以下では3次のベジェ曲線(4個の制御点で示される曲線)を例として、手作業を念頭に置いた作図法を示す。この手順を基にした描画プログラムにも有用性があり、また人によってはベジェ曲線の性質を直観的に把握するにも有効かもしれない。
右図の P0, P1, P2, P3 が与えられた制御点である。今、ベジェ曲線の P0 から t (0 < t < 1) の比率の位置の点の座標を求めるためには、次のように計算すればよい。
- まず、制御点を順に結んで得られる3つの線分 P0P1, P1P2, P2P3(水色の折れ線)をそれぞれ t : 1 − t の比率で分割する点、P4, P5, P6 を求める。
- 次に、これらの点を順に結んで得られる2つの線分 P4P5, P5P6(橙色の折れ線)を再びそれぞれ t : 1 − t の比率で分割する点 P7, P8 を求める。
- 最後に、この2点を結ぶ線分 P7P8(緑色の線分)をさらに t : 1 − t の比率で分割する点 P9 を求めると、この点がベジェ曲線上の点となる。
- この作業を 0 < t < 1 の範囲で繰り返し行うことにより、P0, P1, P2, P3 を制御点とする3次ベジェ曲線(赤色の曲線)が得られる。
Remove ads
交点の算出
要約
視点
図形分割による方法
ベジェ曲線は制御点から成る凸包に内包される性質を利用して、交点が存在する範囲を限定し曲線を切り出すことを反復するBezier clipping[15]がある。
代数方程式による方法(Implicitization)[16]
直線とベジェ曲線の交点は、直線の式の にベジェ曲線の式( など)を 代入した方程式を解くことで、交点候補の を求めることができる。 ベジェ曲線どうしの交点は、一方の曲線の陰関数(陰伏方程式)に、他方の曲線の式を代入した方程式の実数根が交点候補となる。 交点候補は値域などの条件により交点か判定される。 この方法では、解の公式が存在しない高次方程式(3次ベジェ曲線どうしであれば9次方程式)の場合の解法が課題となる。 多数のベジェ曲線で構成された対象(PBRTのhairやfurなど)の3Dレイトレーシングにおいては、実根の有無をBudan-Fourier theoremで判定して絞り込み、Muller's methodやRidders' methodで根を求めるほうが、一般的なスツルムの定理とニュートン法などの組み合わせより効率が良いとの報告例[17] がある。
Remove ads
Composite Bézier curve
→詳細は「複合ベジェ曲線」を参照
複合ベジェ曲線(英: composite Bézier curve)はベジェ曲線を1つのセグメントとして複数セグメントを直列に接続した曲線である[注 1]。ベジェスプライン(英: Bézier spline)[18]、ポリベジェ曲線(英: polybezier)とも。
N次ベジェ曲線は次数を変えずに延長できない。なぜなら延長のために制御点を追加することで次数も増加するからである。またN次ベジェ曲線は既存区間に影響を与えずに延長できない。なぜなら全制御点の反映という特性により新しい制御点座標が既存の区間にも反映されるからである。
これに対する方策にはスプライン曲線をはじめとした区分多項式がある。区分多項式ではある区間を1つの多項式で表現し、その続きの区間を別の多項式で表現し、曲線全体を複数の多項式で構成する。新しい区間の多項式は既存区間と独立しているため、上記の次数増や既存区間影響の問題を回避できる[18]。これを採用し、ベジェ曲線で各区分を表現した区分多項式が composite Bézier curve である。
Remove ads
利用
用途
ベジェ曲線は様々な目的・用途に利用されている。
具体的には、ベジェ曲線は視覚芸術(絵画・アニメ・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次ベジェをサポートする[19][20][21][22][23]。AWT(Java 1.2以降で追加されたQuadCurve2D
, CubicCurve2D
の派生クラス)、SkiaのSkPath
およびAndroidのandroid.graphics.Path
は2次と3次のベジェ両方をサポートする[24][25][26]。
Remove ads
歴史
ベジェ曲線はフランスの自動車メーカー、シトロエン社のド・カステリョ とルノー社のピエール・ベジェにより独立に考案された。ド・カステリョの方が先んじていたが、その論文が公知とならなかったためベジェの名が冠されている[27]。
名称
原語(フランス語)における Bézier の発音はベズィエに近く、「ベジェ曲線」より「ベジエ曲線」の方がこれに忠実と言えるが、いずれの呼称も用いられている。
ベジェ曲面
→詳細は「ベジェ曲面」を参照
ベジェ曲面(曲面パッチなどとも)と呼ばれるような、3次元空間内の曲面への拡張にはいくつか手法がある。たとえば、目的の曲面においてパッチの端点となる3点とその3点における接平面を指定するという方法や、4点を指定し2方向のクロスハッチングのようにして面を構成するという方法がある。
脚注
参考文献
関連項目
外部リンク
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads