Skip to content

ベジェ曲線

最終更新日時: 2025年08月25日 12:57

  • nothing
  • ベジェ曲線は低次のベジェ曲線から順に構築して導出することができる概念である
  • 1次と2次のベジェ曲線を定式化し、それらの線形補間によって3次ベジェ曲線を数学的に導く過程を示す
  • ベジェ曲線は制御点によって形状が決定される曲線で、パラメータ u[0,1]u \in [0,1] を用いて表現される
  • ベジェ曲線は低次の曲線を線形補間することで高次の曲線を構築できる
  • 1次ベジェ曲線は2つの制御点 P0P_0P1P_1 を結ぶ直線であり単純な線形補間である
  • パラメータ u[0,1]u \in [0,1] を用いて以下のように表される:
B(u)=(1u)P0+uP1B(u) = (1-u)P_0 + uP_1

2次ベジェ曲線は3つの制御点 P0P_0, P1P_1, P2P_2 を用いる。以下の手順で導出する:

まず2つの1次ベジェ曲線を定義

{B1(u)=(1u)P0+uP1B2(u)=(1u)P1+uP2 \left\{ \begin{align*} B_1(u) = (1-u)P_0 + uP_1\\ B_2(u) = (1-u)P_1 + uP_2 \end{align*} \right.

次に、これらの1次曲線自体を線形補間すると、

 B(u)=(1u)B1(u)+uB2(u) B(u) = (1-u)B_1(u) + uB_2(u)

この式を展開して整理すると、

B(u)=(1u)[(1u)P0+uP1]+u[(1u)P1+uP2]=(1u)2P0+2u(1u)P1+u2P2\begin{align*} B(u) &= (1-u)[(1-u)P_0 + uP_1] + u[(1-u)P_1 + uP_2] \\ &= (1-u)^2P_0 + 2u(1-u)P_1 + u^2P_2 \end{align*}

3次ベジェ曲線は4つの制御点 B0B_0, B1B_1, B2B_2, B3B_3 を用いる。

まず2つの2次ベジェ曲線を定義すると、

{C1(u)=(1u)2B0+2u(1u)B1+u2B2C2(u)=(1u)2B1+2u(1u)B2+u2B3 \left\{ \begin{align*} C_1(u) = (1-u)^2B_0 + 2u(1-u)B_1 + u^2B_2\\ C_2(u) = (1-u)^2B_1 + 2u(1-u)B_2 + u^2B_3 \end{align*} \right.

次に、これらの2次曲線を線形補間すると、

B(u)=(1u)C1(u)+uC2(u)=(1u)[(1u)2B0+2u(1u)B1+u2B2]+u[(1u)2B1+2u(1u)B2+u2B3]=(1u)3B0+2u(1u)2B1+(1u)u2B2+u(1u)2B1+2u2(1u)B2+u3B3=(1u)3B0+3u(1u)2B1+3u2(1u)B2+u3B3 \begin{align*} B(u) &= (1-u)C_1(u) + uC_2(u)\\ &= (1-u)[(1-u)^2B_0 + 2u(1-u)B_1 + u^2B_2] + u[(1-u)^2B_1 + 2u(1-u)B_2 + u^2B_3] \\ &= (1-u)^3B_0 + 2u(1-u)^2B_1 + (1-u)u^2B_2 + u(1-u)^2B_1 + 2u^2(1-u)B_2 + u^3B_3 \\ &= (1-u)^3B_0 + 3u(1-u)^2B_1 + 3u^2(1-u)B_2 + u^3B_3 \end{align*}
  • バーンスタイン多項式がベジェ曲線の基底関数として機能し、二項係数によって重み付けされることで任意の次数のベジェ曲線を統一的に表現できる

n次のバーンスタイン多項式は二項係数を用いて以下のように定義される:

Bi,n(u)=(ni)ui(1u)ni,i=0,1,,nB_{i,n}(u) = \binom{n}{i} u^i (1-u)^{n-i}, \quad i = 0, 1, \ldots, n

ここで、

二項係数

(ni)=n!i!(ni)!\binom{n}{i} = \frac{n!}{i!(n-i)!}\\ u[0,1] u \in [0,1]

n次ベジェ曲線は、n+1個の制御点 P0,P1,,PnP_0, P_1, \ldots, P_n とバーンスタイン多項式の線形結合として表現される:

B(u)=i=0nBi,n(u)Pi=i=0n(ni)ui(1u)niPiB(u) = \sum_{i=0}^{n} B_{i,n}(u) P_i = \sum_{i=0}^{n} \binom{n}{i} u^i (1-u)^{n-i} P_i

この表現の特徴:

  • 各制御点 PiP_i はバーンスタイン多項式 Bi,n(u)B_{i,n}(u) によって重み付けされる
  • u=0u=0 のとき B(0)=P0B(0) = P_0
  • u=1u=1 のとき B(1)=PnB(1) = P_n
  • 0<u<10 < u < 1 のとき、曲線上の点は全制御点の重み付き平均となる

バーンスタイン多項式には以下の重要な特性がある:

  • 非負性:
Bi,n(u)0,u[0,1]B_{i,n}(u) \geq 0, \forall u \in [0,1]
  • 和の一定性
i=0nBi,n(u)=1,u[0,1]\sum_{i=0}^{n} B_{i,n}(u) = 1, \forall u \in [0,1]

これによりベジェ曲線は制御点の凸結合となる

  • 対称性:
Bi,n(u)=Bni,n(1u)B_{i,n}(u) = B_{n-i,n}(1-u)
  • 再帰的定義
Bi,n(u)=(1u)Bi,n1(u)+uBi1,n1(u)B_{i,n}(u) = (1-u)B_{i,n-1}(u) + uB_{i-1,n-1}(u)

この性質がド・カステリョのアルゴリズムの基礎となる

バーンスタイン多項式の特性により、ベジェ曲線は以下の性質を持つ:

  • 端点補間: 曲線は最初と最後の制御点を通る
  • 凸包性: 曲線は制御点の凸包内に収まる
  • 変差縮小性: 曲線の変動は制御多角形の変動を超えない
  • アフィン不変性: アフィン変換は制御点に適用するだけでよい
  • ベジェ曲線: フランスの自動車技術者ピエール・ベジェにより考案された、制御点によって定義されるパラメトリック曲線
  • 制御点: 曲線の形状を決定する点。曲線は一般に制御点を通過するとは限らない
  • パラメータ: 曲線上の位置を決定する値。通常 u[0,1]u \in [0,1] の範囲で表される
  • バーンスタイン多項式: Sergei Natanovich Bernstein によって導入された多項式族
  • 凸結合: 係数が非負で和が1となる線形結合
  • 凸包: 点集合を含む最小の凸集合
  • ド・カステリョのアルゴリズム: ベジェ曲線を効率的に描画するアルゴリズム

リファレンス: