Working on views (side, front, back, transitions, etc.)
This commit is contained in:
parent
607546e8f4
commit
2abbce4d79
4 changed files with 149 additions and 73 deletions
|
@ -43,15 +43,18 @@ void aircraft_debug(int type) {
|
||||||
FG_RAD_2_DEG(FG_Longitude) * 3600.0,
|
FG_RAD_2_DEG(FG_Longitude) * 3600.0,
|
||||||
FG_RAD_2_DEG(FG_Latitude) * 3600.0,
|
FG_RAD_2_DEG(FG_Latitude) * 3600.0,
|
||||||
FG_Altitude, FG_Phi, FG_Theta, FG_Psi);
|
FG_Altitude, FG_Phi, FG_Theta, FG_Psi);
|
||||||
printf("Mach = %.2f Elev = %.2f, Aileron = %.2f, Rudder = %.2f Power = %.2f\n",
|
printf("Kts = %.0f Elev = %.2f, Aileron = %.2f, Rudder = %.2f Power = %.2f\n",
|
||||||
FG_Mach_number, FG_Elevator, FG_Aileron, FG_Rudder, FG_Throttle[0]);
|
FG_V_equiv_kts, FG_Elevator, FG_Aileron, FG_Rudder, FG_Throttle[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* $Log$
|
/* $Log$
|
||||||
/* Revision 1.6 1997/05/31 19:16:26 curt
|
/* Revision 1.7 1997/06/02 03:01:39 curt
|
||||||
/* Elevator trim added.
|
/* Working on views (side, front, back, transitions, etc.)
|
||||||
/*
|
/*
|
||||||
|
* Revision 1.6 1997/05/31 19:16:26 curt
|
||||||
|
* Elevator trim added.
|
||||||
|
*
|
||||||
* Revision 1.5 1997/05/30 19:30:14 curt
|
* Revision 1.5 1997/05/30 19:30:14 curt
|
||||||
* The LaRCsim flight model is starting to look like it is working.
|
* The LaRCsim flight model is starting to look like it is working.
|
||||||
*
|
*
|
||||||
|
|
134
Main/GLUTkey.c
134
Main/GLUTkey.c
|
@ -24,6 +24,7 @@
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
@ -32,6 +33,7 @@
|
||||||
#include "../aircraft/aircraft.h"
|
#include "../aircraft/aircraft.h"
|
||||||
|
|
||||||
extern double fogDensity;
|
extern double fogDensity;
|
||||||
|
extern double goal_view_offset;
|
||||||
|
|
||||||
/* Handle keyboard events */
|
/* Handle keyboard events */
|
||||||
void GLUTkey(unsigned char k, int x, int y) {
|
void GLUTkey(unsigned char k, int x, int y) {
|
||||||
|
@ -41,54 +43,83 @@ void GLUTkey(unsigned char k, int x, int y) {
|
||||||
|
|
||||||
printf("Key hit = %d\n", k);
|
printf("Key hit = %d\n", k);
|
||||||
|
|
||||||
switch (k) {
|
if ( GLUT_ACTIVE_SHIFT && glutGetModifiers() ) {
|
||||||
case 50: /* numeric keypad 2 */
|
switch (k) {
|
||||||
fgElevMove(-0.01);
|
case 49: /* numeric keypad 1 */
|
||||||
return;
|
goal_view_offset = M_PI * 0.75;
|
||||||
case 56: /* numeric keypad 8 */
|
return;
|
||||||
fgElevMove(0.01);
|
case 50: /* numeric keypad 2 */
|
||||||
return;
|
goal_view_offset = M_PI;
|
||||||
case 49: /* numeric keypad 1 */
|
return;
|
||||||
fgElevTrimMove(-0.001);
|
case 51: /* numeric keypad 3 */
|
||||||
return;
|
goal_view_offset = M_PI * 1.25;
|
||||||
case 55: /* numeric keypad 7 */
|
return;
|
||||||
fgElevTrimMove(0.001);
|
case 52: /* numeric keypad 4 */
|
||||||
return;
|
goal_view_offset = M_PI * 0.50;
|
||||||
case 52: /* numeric keypad 4 */
|
return;
|
||||||
fgAileronMove(-0.01);
|
case 54: /* numeric keypad 6 */
|
||||||
return;
|
goal_view_offset = M_PI * 1.50;
|
||||||
case 54: /* numeric keypad 6 */
|
return;
|
||||||
fgAileronMove(0.01);
|
case 55: /* numeric keypad 7 */
|
||||||
return;
|
goal_view_offset = M_PI * 0.25;
|
||||||
case 48: /* numeric keypad Ins */
|
return;
|
||||||
fgRudderMove(-0.01);
|
case 56: /* numeric keypad 8 */
|
||||||
return;
|
goal_view_offset = 0.00;
|
||||||
case 13: /* numeric keypad Enter */
|
return;
|
||||||
fgRudderMove(0.01);
|
case 57: /* numeric keypad 9 */
|
||||||
return;
|
goal_view_offset = M_PI * 1.75;
|
||||||
case 53: /* numeric keypad 5 */
|
return;
|
||||||
fgAileronSet(0.0);
|
}
|
||||||
fgElevSet(0.0);
|
} else {
|
||||||
fgRudderSet(0.0);
|
switch (k) {
|
||||||
return;
|
case 50: /* numeric keypad 2 */
|
||||||
case 57: /* numeric keypad 9 (Pg Up) */
|
fgElevMove(-0.01);
|
||||||
fgThrottleMove(0, 0.01);
|
return;
|
||||||
return;
|
case 56: /* numeric keypad 8 */
|
||||||
case 51: /* numeric keypad 3 (Pg Dn) */
|
fgElevMove(0.01);
|
||||||
fgThrottleMove(0, -0.01);
|
return;
|
||||||
return;
|
case 49: /* numeric keypad 1 */
|
||||||
case 122:
|
fgElevTrimMove(-0.001);
|
||||||
fogDensity *= 1.10;
|
return;
|
||||||
glFogf(GL_FOG_END, fogDensity);
|
case 55: /* numeric keypad 7 */
|
||||||
printf("Fog density = %.4f\n", fogDensity);
|
fgElevTrimMove(0.001);
|
||||||
return;
|
return;
|
||||||
case 90:
|
case 52: /* numeric keypad 4 */
|
||||||
fogDensity /= 1.10;
|
fgAileronMove(-0.01);
|
||||||
glFogf(GL_FOG_END, fogDensity);
|
return;
|
||||||
printf("Fog density = %.4f\n", fogDensity);
|
case 54: /* numeric keypad 6 */
|
||||||
return;
|
fgAileronMove(0.01);
|
||||||
case 27: /* ESC */
|
return;
|
||||||
exit(0);
|
case 48: /* numeric keypad Ins */
|
||||||
|
fgRudderMove(-0.01);
|
||||||
|
return;
|
||||||
|
case 13: /* numeric keypad Enter */
|
||||||
|
fgRudderMove(0.01);
|
||||||
|
return;
|
||||||
|
case 53: /* numeric keypad 5 */
|
||||||
|
fgAileronSet(0.0);
|
||||||
|
fgElevSet(0.0);
|
||||||
|
fgRudderSet(0.0);
|
||||||
|
return;
|
||||||
|
case 57: /* numeric keypad 9 (Pg Up) */
|
||||||
|
fgThrottleMove(0, 0.01);
|
||||||
|
return;
|
||||||
|
case 51: /* numeric keypad 3 (Pg Dn) */
|
||||||
|
fgThrottleMove(0, -0.01);
|
||||||
|
return;
|
||||||
|
case 122:
|
||||||
|
fogDensity *= 1.10;
|
||||||
|
glFogf(GL_FOG_END, fogDensity);
|
||||||
|
printf("Fog density = %.4f\n", fogDensity);
|
||||||
|
return;
|
||||||
|
case 90:
|
||||||
|
fogDensity /= 1.10;
|
||||||
|
glFogf(GL_FOG_END, fogDensity);
|
||||||
|
printf("Fog density = %.4f\n", fogDensity);
|
||||||
|
return;
|
||||||
|
case 27: /* ESC */
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -121,9 +152,12 @@ void GLUTspecialkey(unsigned char k, int x, int y) {
|
||||||
|
|
||||||
|
|
||||||
/* $Log$
|
/* $Log$
|
||||||
/* Revision 1.7 1997/05/31 19:16:25 curt
|
/* Revision 1.8 1997/06/02 03:01:38 curt
|
||||||
/* Elevator trim added.
|
/* Working on views (side, front, back, transitions, etc.)
|
||||||
/*
|
/*
|
||||||
|
* Revision 1.7 1997/05/31 19:16:25 curt
|
||||||
|
* Elevator trim added.
|
||||||
|
*
|
||||||
* Revision 1.6 1997/05/31 04:13:52 curt
|
* Revision 1.6 1997/05/31 04:13:52 curt
|
||||||
* WE CAN NOW FLY!!!
|
* WE CAN NOW FLY!!!
|
||||||
*
|
*
|
||||||
|
|
|
@ -72,6 +72,8 @@ static GLint mesh;
|
||||||
|
|
||||||
/* Another hack */
|
/* Another hack */
|
||||||
double fogDensity = 2000.0;
|
double fogDensity = 2000.0;
|
||||||
|
double view_offset = 0.0;
|
||||||
|
double goal_view_offset = 0.0;
|
||||||
|
|
||||||
/* Another hack */
|
/* Another hack */
|
||||||
#define DEFAULT_MODEL_HZ 20
|
#define DEFAULT_MODEL_HZ 20
|
||||||
|
@ -122,8 +124,8 @@ static void fgInitVisuals() {
|
||||||
static void fgUpdateViewParams() {
|
static void fgUpdateViewParams() {
|
||||||
double pos_x, pos_y, pos_z;
|
double pos_x, pos_y, pos_z;
|
||||||
struct flight_params *f;
|
struct flight_params *f;
|
||||||
MAT3mat R, tmp;
|
MAT3mat R, TMP;
|
||||||
MAT3vec vec, forward, up;
|
MAT3vec vec, up, forward, fwrd_view;
|
||||||
|
|
||||||
f = ¤t_aircraft.flight;
|
f = ¤t_aircraft.flight;
|
||||||
|
|
||||||
|
@ -146,30 +148,61 @@ static void fgUpdateViewParams() {
|
||||||
/* printf("Roll matrix\n"); */
|
/* printf("Roll matrix\n"); */
|
||||||
/* MAT3print(R, stdout); */
|
/* MAT3print(R, stdout); */
|
||||||
|
|
||||||
MAT3_SET_VEC(vec, 0.0, -1.0, 0.0);
|
MAT3_SET_VEC(vec, 0.0, 1.0, 0.0);
|
||||||
MAT3rotate(tmp, vec, FG_Theta);
|
/* MAT3mult_vec(vec, vec, R); */
|
||||||
|
MAT3rotate(TMP, vec, -FG_Theta);
|
||||||
/* printf("Pitch matrix\n"); */
|
/* printf("Pitch matrix\n"); */
|
||||||
/* MAT3print(tmp, stdout); */
|
/* MAT3print(TMP, stdout); */
|
||||||
MAT3mult(R, R, tmp);
|
MAT3mult(R, R, TMP);
|
||||||
|
|
||||||
MAT3_SET_VEC(vec, 0.0, 0.0, -1.0);
|
MAT3_SET_VEC(vec, 0.0, 0.0, -1.0);
|
||||||
MAT3rotate(tmp, vec, M_PI + M_PI_2 + FG_Psi );
|
/* MAT3mult_vec(vec, vec, R); */
|
||||||
|
/* MAT3rotate(TMP, vec, M_PI + M_PI_2 + FG_Psi + view_offset); */
|
||||||
|
MAT3rotate(TMP, vec, FG_Psi - M_PI_2);
|
||||||
/* printf("Yaw matrix\n");
|
/* printf("Yaw matrix\n");
|
||||||
MAT3print(tmp, stdout); */
|
MAT3print(TMP, stdout); */
|
||||||
MAT3mult(R, R, tmp);
|
MAT3mult(R, R, TMP);
|
||||||
|
|
||||||
/* MAT3print(R, stdout); */
|
/* MAT3print(R, stdout); */
|
||||||
|
|
||||||
/* generate the current forward and up vectors */
|
/* generate the current up, forward, and fwrd-view vectors */
|
||||||
|
MAT3_SET_VEC(vec, 0.0, 0.0, 1.0);
|
||||||
|
MAT3mult_vec(up, vec, R);
|
||||||
|
|
||||||
MAT3_SET_VEC(vec, 1.0, 0.0, 0.0);
|
MAT3_SET_VEC(vec, 1.0, 0.0, 0.0);
|
||||||
MAT3mult_vec(forward, vec, R);
|
MAT3mult_vec(forward, vec, R);
|
||||||
printf("Forward vector is (%.2f,%.2f,%.2f)\n", forward[0], forward[1],
|
printf("Forward vector is (%.2f,%.2f,%.2f)\n", forward[0], forward[1],
|
||||||
forward[2]);
|
forward[2]);
|
||||||
MAT3_SET_VEC(vec, 0.0, 0.0, 1.0);
|
|
||||||
MAT3mult_vec(up, vec, R);
|
if ( fabs(goal_view_offset - view_offset) < 0.09 ) {
|
||||||
|
view_offset = goal_view_offset;
|
||||||
|
} else {
|
||||||
|
/* move view_offset towards goal_view_offset */
|
||||||
|
if ( goal_view_offset > view_offset ) {
|
||||||
|
if ( goal_view_offset - view_offset < M_PI ) {
|
||||||
|
view_offset += 0.05;
|
||||||
|
} else {
|
||||||
|
view_offset -= 0.05;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ( view_offset - goal_view_offset < M_PI ) {
|
||||||
|
view_offset -= 0.05;
|
||||||
|
} else {
|
||||||
|
view_offset += 0.05;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( view_offset > PI2 ) {
|
||||||
|
view_offset -= PI2;
|
||||||
|
} else if ( view_offset < 0 ) {
|
||||||
|
view_offset += PI2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MAT3rotate(TMP, up, view_offset);
|
||||||
|
MAT3mult_vec(fwrd_view, forward, TMP);
|
||||||
|
|
||||||
gluLookAt(pos_x, pos_y, pos_z,
|
gluLookAt(pos_x, pos_y, pos_z,
|
||||||
pos_x + forward[0], pos_y + forward[1], pos_z + forward[2],
|
pos_x + fwrd_view[0], pos_y + fwrd_view[1], pos_z + fwrd_view[2],
|
||||||
up[0], up[1], up[2]);
|
up[0], up[1], up[2]);
|
||||||
|
|
||||||
glLightfv( GL_LIGHT0, GL_POSITION, sun_vec );
|
glLightfv( GL_LIGHT0, GL_POSITION, sun_vec );
|
||||||
|
@ -375,7 +408,7 @@ int main( int argc, char *argv[] ) {
|
||||||
/* Initial Orientation */
|
/* Initial Orientation */
|
||||||
FG_Phi = -2.658474E-06;
|
FG_Phi = -2.658474E-06;
|
||||||
FG_Theta = 7.401790E-03;
|
FG_Theta = 7.401790E-03;
|
||||||
FG_Psi = 102.0 * DEG_TO_RAD;
|
FG_Psi = 282.0 * DEG_TO_RAD;
|
||||||
|
|
||||||
/* Initial Angular B rates */
|
/* Initial Angular B rates */
|
||||||
FG_P_body = 7.206685E-05;
|
FG_P_body = 7.206685E-05;
|
||||||
|
@ -450,9 +483,12 @@ int main( int argc, char *argv[] ) {
|
||||||
|
|
||||||
|
|
||||||
/* $Log$
|
/* $Log$
|
||||||
/* Revision 1.11 1997/05/31 19:16:25 curt
|
/* Revision 1.12 1997/06/02 03:01:38 curt
|
||||||
/* Elevator trim added.
|
/* Working on views (side, front, back, transitions, etc.)
|
||||||
/*
|
/*
|
||||||
|
* Revision 1.11 1997/05/31 19:16:25 curt
|
||||||
|
* Elevator trim added.
|
||||||
|
*
|
||||||
* Revision 1.10 1997/05/31 04:13:52 curt
|
* Revision 1.10 1997/05/31 04:13:52 curt
|
||||||
* WE CAN NOW FLY!!!
|
* WE CAN NOW FLY!!!
|
||||||
*
|
*
|
||||||
|
|
|
@ -44,7 +44,7 @@ GLint mesh2GL(struct mesh *m) {
|
||||||
int i, j, istep, jstep, iend, jend;
|
int i, j, istep, jstep, iend, jend;
|
||||||
float temp;
|
float temp;
|
||||||
|
|
||||||
istep = jstep = 50; /* Detail level 1 -- 1200 ... */
|
istep = jstep = 30; /* Detail level 1 -- 1200 ... */
|
||||||
|
|
||||||
mesh = glGenLists(1);
|
mesh = glGenLists(1);
|
||||||
glNewList(mesh, GL_COMPILE);
|
glNewList(mesh, GL_COMPILE);
|
||||||
|
@ -104,9 +104,12 @@ GLint mesh2GL(struct mesh *m) {
|
||||||
|
|
||||||
|
|
||||||
/* $Log$
|
/* $Log$
|
||||||
/* Revision 1.14 1997/05/31 19:16:26 curt
|
/* Revision 1.15 1997/06/02 03:01:38 curt
|
||||||
/* Elevator trim added.
|
/* Working on views (side, front, back, transitions, etc.)
|
||||||
/*
|
/*
|
||||||
|
* Revision 1.14 1997/05/31 19:16:26 curt
|
||||||
|
* Elevator trim added.
|
||||||
|
*
|
||||||
* Revision 1.13 1997/05/31 04:13:53 curt
|
* Revision 1.13 1997/05/31 04:13:53 curt
|
||||||
* WE CAN NOW FLY!!!
|
* WE CAN NOW FLY!!!
|
||||||
*
|
*
|
||||||
|
|
Loading…
Add table
Reference in a new issue