ベジェ曲線は、コンピュータグラフィックスで図形を描いたり、CSSアニメーションに使われたり、その他多くの場所で使われています。
非常にシンプルなものなので、一度勉強すれば、ベクトルグラフィックスや上級アニメーションの世界で快適に感じる価値があります。
制御点
ベジェ曲線は制御点で定義します。
例えば、2点曲線:
3点曲線:
4点曲線:
For t=0.25 |
For t=0.5 |
---|---|
-
さて、青いセグメントでは、
t
の同じ値に比例する距離上の点を取る。 つまり、t=0.25
(左図) ではセグメントの左4分の1の端に、t=0.5
(右図) ではセグメントの真ん中に点を取ることになります。 -
t
が0
から1
まで続いているので、t
の値によって曲線に1点ずつ追加されることになる。 このような点の集合がベジェ曲線を形成する。 上の写真では赤く放物線を描いています。
以上、3点に対する処理でした。
4点のデモ(マウスで移動可能):
4点のアルゴリズム:
- 制御点をセグメントで接続します。 1 → 2, 2 → 3, 3 → 4.
-
0
から1
までの区間でt
ごとに:- これらのセグメント上に、先頭から
t
に比例した距離の点を取ります。 これらの点を結ぶと、2つの緑の線分ができる。 - これらの線分上に、
t
に比例する点を取る。 7173> - 青い線分に、
t
に比例する点をとります。
- これらのセグメント上に、先頭から
- これらの点を合わせて曲線を形成する。
このアルゴリズムは再帰的で、制御点の数に関係なく一般化することができる。
制御点N個が与えられたとき:
- 我々はそれらを接続して、最初にN-1セグメントを得る。
- 次に
0
から1
までの各t
に対して、各セグメント上の点をt
に比例した距離で取り、それらを接続する。 - 点が1つになるまでステップ2を繰り返す。
これらの点が曲線を作る。
セグメントと曲線がどう作られるかをはっきり見るために例を実行したり一時停止したりする。
y=1/t
のような曲線:ジグザグ制御点もうまく機能します:
ループを作成することも可能です。
滑らかでないベジェ曲線(それも可能):
アルゴリズムの説明で不明な点があれば、上記のライブ例で曲線がどのように作られるかを見てください。
アルゴリズムは再帰的であるため、5、6、またはそれ以上の制御点を使用して、任意の順序でベジェ曲線を構築することができます。 しかし実際には多くの点はあまり役に立たない。 通常は2-3点をとり、複雑な線はいくつかの曲線を接着する。
与えられた点から曲線を描くには?ベジェ曲線を指定するには、制御点を用います。
時には別のタスクがあります: 複数の点を通して曲線を描き、すべての点が1つの滑らかな曲線になるようにすることです。 この作業は補間と呼ばれ、ここでは扱わない。
このような曲線にはラグランジュ多項式などの数学的公式がある。
数学
ベジェ曲線は数式で記述することができる
見たように、実際には知る必要はなく、ほとんどの人はマウスでポイントを動かして曲線を描くだけです。
制御点
Pi
の座標が与えられると、最初の制御点の座標はP1 = (x1, y1)
、2番目はP2 = (x2, y2)
というように、曲線の座標はセグメントからのパラメータ
t
に依存する方程式で記述されます。-
2点曲線の式:
P = (1-t)P1 + tP2
-
3点の制御点に対して。
P = (1−t)2P1 + 2(1−t)tP2 + t2P3
-
制御点が4の場合:
P = (1−t)3P1 + 3(1−t)2tP2 +3(1−t)t2P3 + t3P4
これらはベクトル方程式である。 つまり、
P
の代わりにx
とy
を入れれば、対応する座標が得られる。例えば、3点曲線は次のように計算された点
(x,y)
で形成されます:x = (1−t)2x1 + 2(1−t)tx2 + t2x3
y = (1−t)2y1 + 2(1−t)ty2 + t2y3
x1, y1, x2, y2, x3, y3
の代わりに3制御点の座標を置いて、t
が0
から1
に移動すると、t
の各値について曲線の(x,y)
が得られることになります。例えば、制御点を
(0,0)
、(0.5, 1)
、(1, 0)
とすると、方程式は次のようになります:x = (1−t)2 * 0 + 2(1−t)t * 0.5 + t2 * 1 = (1-t)t + t2 = t
y = (1−t)2 * 0 + 2(1−t)t * 1 + t2 * 0 = 2(1-t)t = –2t2 + 2t
今、
t
が0
から1
まで動くので、各t
の値の集合(x,y)
はその制御点に対する曲線を形成します。まとめ
ベジェ曲線はその制御点によって定義される。
ベジェ曲線の定義を2つ見たが、
- 描画処理を使用する。
ベジェ曲線の良い性質:
- マウスで制御点を移動して滑らかな線を描くことができる。
- 複雑な図形はいくつかのベジェ曲線で作ることができる。
用途:
- コンピュータグラフィック、モデリング、ベクトルグラフィック編集で使用。 フォントはベジェ曲線によって記述されます。
- Web 開発では – Canvas および SVG 形式のグラフィックに使用します。 ちなみに、上記の「ライブ」の例はSVGで書かれています。 実際には 1 つの SVG 文書で、パラメータとしてさまざまな点が与えられます。 別ウィンドウで開いてソースを見ることができます: demo.svg.
- CSS animation でアニメーションのパスと速度を記述するために使用されます。
-