Exemple #1
0
static void mzlook( const double eye[3],
                    const double target[3],
                    const double up[3] )
{

    {
        double R[9] = {0};
        aa_tf_rotmat_mzlook(eye,target,up,R);
        assert( aa_tf_isrotmat(R) );
    }

    double g_E_cam[7];
    double cam_E_g[7];
    aa_tf_qutr_mzlook(eye,target,up,g_E_cam);
    aa_tf_qutr_conj(g_E_cam, cam_E_g);
    {
        double x[3];
        aa_tf_qutr_tf(g_E_cam, aa_tf_vec_ident, x);
        aveq("mzlook eye 0", 3, eye, x, 1e-6 );
        aa_tf_qutr_tf(cam_E_g, eye, x);
        aveq("mzlook eye 1", 3, aa_tf_vec_ident, x, 1e-6 );
    }
    {
        double ell[3];
        for(size_t i=0; i<3; i++) ell[i] = -(target[i] - eye[i]);
        aa_tf_vnormalize(ell);
        double z[3];
        aa_tf_qrot(cam_E_g, ell, z);
        aveq("mzlook rot", 3, z, aa_tf_vec_z, 1e-6 );
    }

}
Exemple #2
0
int main(int argc, char *argv[])
{
    (void)argc; (void)argv;


    SDL_Window* window = NULL;
    SDL_GLContext gContext = NULL;

    aa_sdl_gl_window( "SDL Test",
                      SDL_WINDOWPOS_UNDEFINED,
                      SDL_WINDOWPOS_UNDEFINED,
                      SCREEN_WIDTH,
                      SCREEN_HEIGHT,
                      SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE,
                      &window, &gContext);

    printf("OpenGL Version: %s\n", glGetString(GL_VERSION));

    Init();

    struct aa_gl_globals *globals = aa_gl_globals_create();
    // global camera
    {
        double world_E_camera_home[7] = AA_TF_QUTR_IDENT_INITIALIZER;
        double eye[3] = {1,1,0.5};
        double target[3] = {0,0,0};
        double up[3] = {0,0,1};
        aa_tf_qutr_mzlook( eye, target, up, world_E_camera_home );
        aa_gl_globals_set_camera_home( globals, world_E_camera_home );
        aa_gl_globals_home_camera( globals );

    }

    // global lighting
    {
        double v_light[3] = {.5,1,5};
        double ambient[3] = {.1,.1,.1};
        aa_gl_globals_set_light_position( globals, v_light );
        aa_gl_globals_set_ambient(globals, ambient);
    }


    aa_sdl_display_loop( window, globals,
                         display,
                         globals );


    SDL_GL_DeleteContext(gContext);
    SDL_DestroyWindow( window );

    SDL_Quit();
    return 0;
}