ベジェ曲線は、2 以上の次数で定義されます。よく利用されるのは、2次、3次で、4次以上は、ほとんど利用されていません。2次、3次のスプライン曲線※1 の表現力が十分で、かつ、扱いやすい※2 のがその理由です。
※1 ベジェ曲線を、複数つなげたもの
※2 次数が増えると制御点が増えたり、変数の次数が大きくなって計算が複雑になります
2次ベジェ曲線の式は、
です。、
、
は制御点、
はパラメーターです。
を 0 から 1 に変化させていくことで、
、
を端点とする曲線の点が計算されます。
3次ベジェ曲線の式は、
です。、
、
、
は制御点、
はパラメーターです。
を 0 から 1 に変化させていくことで、
、
を端点とする曲線の点が計算されます。
、
、
、
、
は、位置ベクトル
ですが、
、
成分に分けても式の形は変わりません。
3 次ベジェ曲線の点を、制御点と t から求める c++ のコードです。
templateinline point<_T> CalcBezierPoint( const point<_T>& p0, const point<_T>& p1, const point<_T>& p2, const point<_T>& p3, _T t ) { _T u = (_T)1 - t; return u * u * u * p0 + t * u * u * 3 * p1 + t * t * u * 3 * p2 + t * t * t * p3; }
ストローク
で実際に使われているコードなので、間違ってないと思いますが、point<_T>
や、operator *
などを定義しないとコンパイルできません。
ご意見・ご要望などは
フォームメール
から送信してください。
更新情報は、
ブログ
でも配信してます。