23 static const float B[3][3] = {
24 {+1.0f, -2.0f, +1.0f},
25 {-2.0f, +2.0f, +0.0f},
33 void BSpline::interpolate_quad (
int * x,
int * y,
float t) {
34 const float t_vec[] = {t * t, t, 1.0f};
37 r_vec[0] = t_vec[0] * B[0][0] + t_vec[1] * B[1][0] + t_vec[2] * B[2][0];
38 r_vec[1] = t_vec[0] * B[0][1] + t_vec[1] * B[1][1] + t_vec[2] * B[2][1];
39 r_vec[2] = t_vec[0] * B[0][2] + t_vec[1] * B[1][2] + t_vec[2] * B[2][2];
44 x[3] = (int)(r_vec[0] * x[0] + r_vec[1] * x[1] + r_vec[2] * x[2]);
45 y[3] = (int)(r_vec[0] * y[0] + r_vec[1] * y[1] + r_vec[2] * y[2]);
52 void BSpline::interpolate_quad (
float * x,
float * y,
float t) {
53 const float t_vec[] = {t * t, t, 1.0f};
56 r_vec[0] = t_vec[0] * B[0][0] + t_vec[1] * B[1][0] + t_vec[2] * B[2][0];
57 r_vec[1] = t_vec[0] * B[0][1] + t_vec[1] * B[1][1] + t_vec[2] * B[2][1];
58 r_vec[2] = t_vec[0] * B[0][2] + t_vec[1] * B[1][2] + t_vec[2] * B[2][2];
63 x[3] = r_vec[0] * x[0] + r_vec[1] * x[1] + r_vec[2] * x[2];
64 y[3] = r_vec[0] * y[0] + r_vec[1] * y[1] + r_vec[2] * y[2];