1:ベジェ曲線とは

ベジェ曲線とは、N個の制御点からなるN-1次曲線のこと。 wikipedia: ベジェ曲線

このシリーズでは、プログラムの様々なことに応用することを目指して、ベジェ曲線について調べます。

 

制御点を B0, B1, …, BN-1 とすると、ベジェ曲線は、

bz1

と表現される。ここで、Jni(t) はバーンスタイン基底関数のブレンディング関数である。

bz2

t が 0 から 1 まで変化する時、B0BN-1 を両端とするベジェ曲線が得られる。

 

ベジェ曲線の式は、引用のとおりであるらしい。 通常良く使われるベジエ曲線は、N=4 の3次ベジェ曲線。 Bi は、各制御点の座標。 2行目は、 “バーンスタイン基底関数のブレンディング関数” とのことらしいが、よくわからない。 特に、 ( n i ) と書いてあるベクトルらしきものがわからない。 散々調べた結果、これは 組み合わせの数 nCi という意味だった。 こちらの関数で、n = N-1 ということなので少し注意。

static public PointF curve(PointF[] pt, float t) {
 PointF total = new PointF(0.0f, 0.0f);
 int n = pt.Length - 1;
 int i;
 for (i = 0; i < pt.Length; i++) {
    total.X += pt[i].X * mCn(n, i) * (float)Math.Pow((double)t, i)
     * (float)Math.Pow(1.0 - t, (double)n - i);
    total.Y += pt[i].Y * mCn(n, i) * (float)Math.Pow((double)t, i)
     * (float)Math.Pow(1.0 - t, (double)n - i);
 }
 return total;
}
3次ベジェ曲線がよく使われている。4つの制御点を持ち、3次式で表される。
(a, b, c, d は制御点。)
(tについて整理すると以下の様になる。)
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中