Curve)naochangセトウナオの開発メモ。CurveIllustrator等でもおなじみのベジェ曲線。ベジェ曲線には次数があり、Illustratorでは3次、Flashでは絵を描くときは3次だけど、実行するときは2次に変換される。(FlashPlayer11以降は3次もサポート)次数が大きいほど制御点が多く、少ないアンカーポイントで線を調整ができるが、処理も重たくなる。どのような仕組みかは、こちらのアニメーションgifを見るとわかりやすい。3次の場合は点が4つ必要になり、通るのは始点と終点のみ。残りの2点は曲線を制御するために使われる。Illustratorなどでいうところのハンドルがそれにあたる。3次の場合は4つの始点と終点のみ繋いでいくので、それを最初の点から最後の点まで繰り返して、複数の点がなめらかに繋がるように見せるが、線が滑らかになるように点にある2つのハンドルが点を挟んで線対称となるように配置する。線対称でない場合は、Illustratorでいうハンドルを折っている状態で、滑らかではなくなる。逆にこう行った操作が容易にできるベジェ曲線は特に2Dを描くのに向いているんですね。曲線ではどのように滑らかな曲線を作るかというブレンディング関数があり、ベジェ曲線ではバーンスタイン基底関数というブレンディング関数を使っているようです。ベジェ曲線の式を見て見ると。\sum_{i=0}^{N-1}P_iB_{(N-1)i}(t)\end{align}\(P_i\)は制御点、\(N\)は制御点の数。\(B_ni(t)\)がバーンスタイン基底関数。i}\)は二項係数で、組み合わせと同じ。次数になるので次数をnとして表現するとこうなる。t)^{n-i}\end{align}あとは、すでにこちらで非常にわかりやすくプログラム化されているので、それをなぞるだけ。P_3t^3\end{align}ハンドルの位置がアンカーポイントの点対象にあれば滑らかなカーブとなるが、位置が違うと折れ曲がったカーブとなる。コメントをキャンセルメールアドレスが公開されることはありません。