Esempio n. 1
0
int main(int ac, char** av)
{
#if 1
    {
        fixed_t fu = float_to_fixed(1.2);
        fixed_t bar = float_to_fixed(2.4);
        fixed_t baz = fixed_add(fu, bar);

        printf("%f + ", fixed_to_float(fu));
        printf("%f = ", fixed_to_float(bar));
        printf("%f\n", fixed_to_float(baz));
    }

    {
        fixed_t fu = float_to_fixed(1.5);
        fixed_t bar = int_to_fixed(2);
        fixed_t baz = fixed_mul(fu, bar);

        printf("%f * ", fixed_to_float(fu));
        printf("%f = ", fixed_to_float(bar));
        printf("%f\n", fixed_to_float(baz));
    }

    {
        fixed_t fu = int_to_fixed(1);
        fixed_t bar = int_to_fixed(2);
        fixed_t baz = fixed_div(fu, bar);

        printf("%f / ", fixed_to_float(fu));
        printf("%f = ", fixed_to_float(bar));
        printf("%f\n", fixed_to_float(baz));
    }

    {
        fixed_t fu = int_to_fixed(-1);
        fixed_t bar = int_to_fixed(2);
        fixed_t baz = fixed_div(fu, bar);

        printf("%f / ", fixed_to_float(fu));
        printf("%f = ", fixed_to_float(bar));
        printf("%f\n", fixed_to_float(baz));
    }
#endif

#if 0
    {
        fixed_t alpha = float_to_fixed(0.0);
        fixed_t step = float_to_fixed(0.01);
        for (; alpha < FIXED_TWO_PI; alpha = fixed_add(alpha, step))
        {
            printf("%f ", fixed_to_float(alpha));
            printf("%f\n", fabsf(sinf(fixed_to_float(alpha)) - fixed_to_float(fixed_sin(alpha))));
        }

    }
#endif

    return 0;
}
Esempio n. 2
0
File: mat.c Progetto: tuttlem/freak
void mat44_euler_rot(mat44 *m, fixed yaw, fixed pitch, fixed roll) {
  fixed sb = fixed_sin(yaw), cb = fixed_cos(yaw),
    sa = fixed_sin(pitch), ca = fixed_cos(pitch),
    sc = fixed_sin(roll), cc = fixed_cos(roll);

  fixed
    a00 = fixed_mul(cc, cb),
    a01 = fixed_mul(-cb, sc),
    a02 = sb,
    a10 = fixed_mul3(sa, sb, cc) + fixed_mul(ca, sc),
    a11 = fixed_mul3(-sa, sb, sc) + fixed_mul(ca, cc),
    a12 = fixed_mul(-sa, cb),
    a20 = fixed_mul3(-ca, sb, cc) + fixed_mul(sa, sc),
    a21 = fixed_mul3(ca, sb, sc) + fixed_mul(sa, cc),
    a22 = fixed_mul(ca, cb);

  mat44_set(m,
            a00, a01, a02, 0,
            a10, a11, a12, 0,
            a20, a21, a22, 0,
            0  , 0  , 0  , FIXED_ONE);
}
Esempio n. 3
0
File: mat.c Progetto: tuttlem/freak
void mat44_axis_rot(mat44 *m, vec3 *axis, fixed angle) {
  fixed ca = fixed_cos(angle),
    sa = fixed_sin(angle);

  fixed nca = FIXED_ONE - ca;

  fixed
    a00 = ca + fixed_mul3(axis->x, axis->x, nca),
    a01 = fixed_mul3(axis->x, axis->y, nca) - fixed_mul(axis->z, sa),
    a02 = fixed_mul3(axis->x, axis->z, nca) + fixed_mul(axis->y, sa),
    a10 = fixed_mul3(axis->y, axis->x, nca) + fixed_mul(axis->z, sa),
    a11 = ca + fixed_mul3(axis->y, axis->y, nca),
    a12 = fixed_mul3(axis->y, axis->z, nca) - fixed_mul(axis->x, sa),
    a20 = fixed_mul3(axis->z, axis->x, nca) - fixed_mul(axis->y, sa),
    a21 = fixed_mul3(axis->z, axis->y, nca) + fixed_mul(axis->x, sa),
    a22 = ca + fixed_mul3(axis->z, axis->z, nca);
                                                    
  mat44_set(m,
            a00, a01, a02, 0,
            a10, a11, a12, 0,
            a20, a21, a22, 0,
            0  , 0  , 0  , FIXED_ONE);
  
}