+ float aspect_adjust = get_aspect_adjust(_xsize_node->getIntValue(),
+ _ysize_node->getIntValue());
+ if (aspect_adjust <1.0)
+ update(WIN_X, int(WIN_W * aspect_adjust), WIN_Y, WIN_H);
+ else
+ update(WIN_X, WIN_W, WIN_Y, int(WIN_H / aspect_adjust));
+}
+
+
+void
+FGPanel::update (GLfloat winx, GLfloat winw, GLfloat winy, GLfloat winh)
+{
+ // Calculate accelerations
+ // and jiggle the panel accordingly
+ // The factors and bounds are just
+ // initial guesses; using sqrt smooths
+ // out the spikes.
+ double x_offset = _x_offset;
+ double y_offset = _y_offset;
+
+ if (_jitter != 0.0) {
+ double a_x_pilot = current_aircraft.fdm_state->get_A_X_pilot();
+ double a_y_pilot = current_aircraft.fdm_state->get_A_Y_pilot();
+ double a_z_pilot = current_aircraft.fdm_state->get_A_Z_pilot();
+
+ double a_zx_pilot = a_z_pilot - a_x_pilot;
+
+ int x_adjust = int(sqrt(fabs(a_y_pilot) * _jitter)) *
+ (a_y_pilot < 0 ? -1 : 1);
+ int y_adjust = int(sqrt(fabs(a_zx_pilot) * _jitter)) *
+ (a_zx_pilot < 0 ? -1 : 1);
+
+ // adjustments in screen coordinates
+ x_offset += x_adjust;
+ y_offset += y_adjust;
+ }
+