ベジェ曲線とは?
ベジェ曲線とは、N個の制御点から得られる(N−1)次曲線です。
滑らかな曲線を描く場合にベジェ曲線はよく利用され、ツールやゲームに使うことが出来ます。
ベジェ曲線ソースコード
下記にC++で、ベジェ曲線上での座標計算プログラムを紹介します。
struct Vector3 {
union {
struct { float x,y,z; };
float v[3];
};
float &operator[](unsigned int idx) {
return v[idx];
}
const float &operator[](unsigned int idx) const {
return v[idx];
}
};
/*!\brief ベジェ曲線座標取得
*\param[out] rslt :座標格納
*\param[in] p0 :始点
*\param[in] p1 :制御点1
*\param[in] p2 :制御点2
*\param[in] p3 :終点
*\param[in] t :時間 (0.0f <= t <= 1.0f)
*/
void GetBezierCurvePoint(Vector3 &rslt, const Vector3 &p0, const Vector3 &p1, const Vector3 &p2, const Vector3 &p3, float t)
{
float mP0 = (1-t)*(1-t)*(1-t);
float mP1 = 3 * t * (1-t)*(1-t);
float mP2 = 3 * t*t * (1-t);
float mP3 = t*t*t;
rslt[0] = p0[0]*mP0 + p1[0]*mP1 + p2[0]*mP2 + p3[0]*mP3;
rslt[1] = p0[1]*mP0 + p1[1]*mP1 + p2[1]*mP2 + p3[1]*mP3;
rslt[2] = p0[2]*mP0 + p1[2]*mP1 + p2[2]*mP2 + p3[2]*mP3;
}
コメント