void idle(void) { if(reality_mode) { static long oldtime = 0; long newtime = get_time(); long dt = newtime - oldtime; oldtime = newtime; elevation += (double)dt*MULTIPLIER*ELEV_RATE* (int)((double)(mousey - ae_window_width()/2)/5); while(elevation > M_PI_2) { elevation -= M_PI; azimuth -= 2*M_PI; } while(elevation < -M_PI_2) { elevation += M_PI; azimuth += 2*M_PI; } azimuth += (double)dt*MULTIPLIER*AZI_RATE* (int)((double)(mousex - ae_window_width()/2)/5); while(azimuth > M_PI) azimuth -= 2.0*M_PI; while(azimuth < -M_PI) azimuth += 2.0*M_PI; if(action & ROLL) { roll += (double)dt*MULTIPLIER*ROLL_RATE* (int)((double)(mousex - ae_window_width()/2)/5); while (roll > 2.0*M_PI) roll = roll - 4.0*M_PI; if (compass_win_exists) { glutSetWindow(compass_win); glutPostRedisplay(); glutSetWindow(disp_win); } } glutSetWindow(ae_win); glutPostRedisplay(); glutSetWindow(disp_win); recalc_view_and_up_from_AER(); really_look_at_it(); } else { if (action & ROLL) { roll_clockwise(); if (compass_win_exists) { glutSetWindow(compass_win); glutPostRedisplay(); glutSetWindow(disp_win); } } } if (action & ZOOM_IN) zoom(); else if (action & ZOOM_OUT) zoom(); if (action & SPIN) do_spin(); glutSetWindow(disp_win); glutPostRedisplay(); }
static void recalc_AE(int win_x, int win_y) { /* from window coords */ azimuth = M_PI * (-1.0 + 2.0*(Real)win_x/(Real)ae_window_width()); while (azimuth > M_PI) azimuth -= 2.0*M_PI; while (azimuth < -M_PI) azimuth += 2.0*M_PI; elevation = (M_PI_2)*(1.0 - 2.0*(Real)win_y/(Real)ae_window_height()); while (elevation > M_PI_2) elevation -= M_PI; while (elevation < -M_PI_2) elevation += M_PI; }
static void recalc_AE(int win_x, int win_y) { /* from window coords */ azimuth = M_PI * (-1.0 + 2.0*(Real)win_x/(Real)ae_window_width()); elevation = (M_PI_2)*(1.0 - 2.0*(Real)win_y/(Real)ae_window_height()); }