/*********************************************************** * Name: update_model * * Arguments: * CUBE_STATE_T *state - holds OGLES model info * * Description: Updates model projection to current position/rotation * * Returns: void * ***********************************************************/ static void update_model(CUBE_STATE_T *state) { // update position #if 1 state->rot_angle_x = cube_attitude.roll; state->rot_angle_y = cube_attitude.pitch; state->rot_angle_z = cube_attitude.yaw; state->distance = inc_and_clip_distance(state->distance, state->distance_inc); glLoadIdentity(); // move camera back to see the cube glTranslatef(0.f, 0.f, -state->distance); // Rotate model to new position glRotatef(state->rot_angle_z, 0.f, 0.f, 1.f); glRotatef(state->rot_angle_y, 0.f, 1.f, 0.f); glRotatef(state->rot_angle_x, 1.f, 0.f, 0.f); #else state->rot_angle_x = inc_and_wrap_angle(state->rot_angle_x, state->rot_angle_x_inc); state->rot_angle_y = inc_and_wrap_angle(state->rot_angle_y, state->rot_angle_y_inc); state->rot_angle_z = inc_and_wrap_angle(state->rot_angle_z, state->rot_angle_z_inc); state->distance = inc_and_clip_distance(state->distance, state->distance_inc); glLoadIdentity(); // move camera back to see the cube glTranslatef(0.f, 0.f, -state->distance); // Rotate model to new position glRotatef(state->rot_angle_x, 1.f, 0.f, 0.f); glRotatef(state->rot_angle_y, 0.f, 1.f, 0.f); glRotatef(state->rot_angle_z, 0.f, 0.f, 1.f); #endif }
/*********************************************************** * Name: teapot_update_model * * Arguments: * TEAPOT_STATE_T *state - holds OGLES model info * * Description: Updates model projection to current position/rotation * * Returns: void * ***********************************************************/ static int teapot_update_model(RASPITEX_STATE *raspitex_state) { TEAPOT_STATE_T *state = (TEAPOT_STATE_T *) raspitex_state->scene_state; // update position state->rot_angle_x = inc_and_wrap_angle(state->rot_angle_x, state->rot_angle_x_inc); state->rot_angle_y = inc_and_wrap_angle(state->rot_angle_y, state->rot_angle_y_inc); state->rot_angle_z = inc_and_wrap_angle(state->rot_angle_z, state->rot_angle_z_inc); state->distance = inc_and_clip_distance(state->distance, state->distance_inc); glLoadIdentity(); // move camera back to see the cube glTranslatef(0.f, 0.f, -state->distance); // Rotate model to new position glRotatef(state->rot_angle_x, 1.f, 0.f, 0.f); glRotatef(state->rot_angle_y, 0.f, 1.f, 0.f); glRotatef(state->rot_angle_z, 0.f, 0.f, 1.f); return 0; }
/*********************************************************** * Name: update_model * * Arguments: * APP_STATE_T *state - holds OGLES model info * * Description: Updates model projection to current position/rotation * * Returns: void * ***********************************************************/ static void update_model (APP_STATE_T * state) { if (state->animate) { /* update position */ state->rot_angle_x = inc_and_wrap_angle (state->rot_angle_x, state->rot_angle_x_inc); state->rot_angle_y = inc_and_wrap_angle (state->rot_angle_y, state->rot_angle_y_inc); state->rot_angle_z = inc_and_wrap_angle (state->rot_angle_z, state->rot_angle_z_inc); state->distance = inc_and_clip_distance (state->distance, state->distance_inc); } glLoadIdentity (); /* move camera back to see the cube */ glTranslatef (0.f, 0.f, -state->distance); /* Rotate model to new position */ glRotatef (state->rot_angle_x, 1.f, 0.f, 0.f); glRotatef (state->rot_angle_y, 0.f, 1.f, 0.f); glRotatef (state->rot_angle_z, 0.f, 0.f, 1.f); }