]> git.mxchange.org Git - flightgear.git/blob - src/FDM/LaRCsim/ls_generic.h
Provide a better(?) solution to the windows GDI problem
[flightgear.git] / src / FDM / LaRCsim / ls_generic.h
1 /***************************************************************************
2
3         TITLE:  ls_generic.h
4         
5 ----------------------------------------------------------------------------
6
7         FUNCTION:       LaRCSim generic parameters header file
8
9 ----------------------------------------------------------------------------
10
11         MODULE STATUS:  developmental
12
13 ----------------------------------------------------------------------------
14
15         GENEALOGY:      Created 15 DEC 1993 by Bruce Jackson;
16                         was part of old ls_eom.h header
17
18 ----------------------------------------------------------------------------
19
20         DESIGNED BY:    B. Jackson
21         
22         CODED BY:       B. Jackson
23         
24         MAINTAINED BY:  guess who
25
26 ----------------------------------------------------------------------------
27
28         MODIFICATION HISTORY:
29         
30         DATE    PURPOSE                                         BY
31         
32                 
33 ----------------------------------------------------------------------------
34
35         REFERENCES:
36         
37                 [ 1]    McFarland, Richard E.: "A Standard Kinematic Model
38                         for Flight Simulation at NASA-Ames", NASA CR-2497,
39                         January 1975
40                         
41                 [ 2]    ANSI/AIAA R-004-1992 "Recommended Practice: Atmos-
42                         pheric and Space Flight Vehicle Coordinate Systems",
43                         February 1992
44                         
45                 [ 3]    Beyer, William H., editor: "CRC Standard Mathematical
46                         Tables, 28th edition", CRC Press, Boca Raton, FL, 1987,
47                         ISBN 0-8493-0628-0
48                         
49                 [ 4]    Dowdy, M. C.; Jackson, E. B.; and Nichols, J. H.:
50                         "Controls Analysis and Simulation Test Loop Environ-
51                         ment (CASTLE) Programmer's Guide, Version 1.3", 
52                         NATC TM 89-11, 30 March 1989.
53                         
54                 [ 5]    Halliday, David; and Resnick, Robert: "Fundamentals
55                         of Physics, Revised Printing", Wiley and Sons, 1974.
56                         ISBN 0-471-34431-1
57
58                 [ 6]    Anon: "U. S. Standard Atmosphere, 1962"
59                 
60                 [ 7]    Anon: "Aeronautical Vest Pocket Handbook, 17th edition",
61                         Pratt & Whitney Aircraft Group, Dec. 1977
62                         
63                 [ 8]    Stevens, Brian L.; and Lewis, Frank L.: "Aircraft 
64                         Control and Simulation", Wiley and Sons, 1992.
65                         ISBN 0-471-61397-5                      
66
67 --------------------------------------------------------------------------*/
68
69
70 #ifndef _LS_GENERIC_H
71 #define _LS_GENERIC_H
72
73
74 #ifdef __cplusplus                                                          
75 extern "C" {                            
76 #endif                                   
77
78
79 #include "ls_types.h"
80
81
82 typedef struct {
83
84 /*
85  * Needed for windows builds
86  */
87 #ifdef ALpha
88 #undef Alpha
89 #endif
90
91 /*================== Mass properties and geometry values ==================*/
92         
93     DATA    mass, i_xx, i_yy, i_zz, i_xz;       /* Inertias */
94 #define Mass                    generic_.mass
95 #define I_xx                    generic_.i_xx
96 #define I_yy                    generic_.i_yy
97 #define I_zz                    generic_.i_zz
98 #define I_xz                    generic_.i_xz
99         
100     VECTOR_3    d_pilot_rp_body_v;      /* Pilot location rel to ref pt */
101 #define D_pilot_rp_body_v       generic_.d_pilot_rp_body_v
102 #define Dx_pilot                generic_.d_pilot_rp_body_v[0]
103 #define Dy_pilot                generic_.d_pilot_rp_body_v[1]
104 #define Dz_pilot                generic_.d_pilot_rp_body_v[2]
105
106     VECTOR_3    d_cg_rp_body_v; /* CG position w.r.t. ref. point */
107 #define D_cg_rp_body_v          generic_.d_cg_rp_body_v
108 #define Dx_cg                   generic_.d_cg_rp_body_v[0]
109 #define Dy_cg                   generic_.d_cg_rp_body_v[1]
110 #define Dz_cg                   generic_.d_cg_rp_body_v[2]
111         
112 /*================================ Forces =================================*/
113
114     VECTOR_3    f_body_total_v;
115 #define F_body_total_v          generic_.f_body_total_v
116 #define F_X                     generic_.f_body_total_v[0]
117 #define F_Y                     generic_.f_body_total_v[1]
118 #define F_Z                     generic_.f_body_total_v[2]
119
120     VECTOR_3    f_local_total_v;
121 #define F_local_total_v         generic_.f_local_total_v
122 #define F_north                 generic_.f_local_total_v[0]
123 #define F_east                  generic_.f_local_total_v[1]
124 #define F_down                  generic_.f_local_total_v[2]
125
126     VECTOR_3    f_aero_v;
127 #define F_aero_v                generic_.f_aero_v
128 #define F_X_aero                generic_.f_aero_v[0]
129 #define F_Y_aero                generic_.f_aero_v[1]
130 #define F_Z_aero                generic_.f_aero_v[2]
131
132     VECTOR_3    f_engine_v;
133 #define F_engine_v              generic_.f_engine_v
134 #define F_X_engine              generic_.f_engine_v[0]
135 #define F_Y_engine              generic_.f_engine_v[1]
136 #define F_Z_engine              generic_.f_engine_v[2]
137
138     int         use_external_engine;
139 #define Use_External_Engine     generic_.use_external_engine
140
141     VECTOR_3    f_gear_v;
142 #define F_gear_v                generic_.f_gear_v
143 #define F_X_gear                generic_.f_gear_v[0]
144 #define F_Y_gear                generic_.f_gear_v[1]
145 #define F_Z_gear                generic_.f_gear_v[2]
146
147 /*================================ Moments ================================*/
148
149     VECTOR_3    m_total_rp_v;
150 #define M_total_rp_v            generic_.m_total_rp_v
151 #define M_l_rp                  generic_.m_total_rp_v[0]
152 #define M_m_rp                  generic_.m_total_rp_v[1]
153 #define M_n_rp                  generic_.m_total_rp_v[2]
154
155     VECTOR_3    m_total_cg_v;
156 #define M_total_cg_v            generic_.m_total_cg_v
157 #define M_l_cg                  generic_.m_total_cg_v[0]
158 #define M_m_cg                  generic_.m_total_cg_v[1]
159 #define M_n_cg                  generic_.m_total_cg_v[2]
160
161     VECTOR_3    m_aero_v;
162 #define M_aero_v                generic_.m_aero_v
163 #define M_l_aero                generic_.m_aero_v[0]
164 #define M_m_aero                generic_.m_aero_v[1]
165 #define M_n_aero                generic_.m_aero_v[2]
166
167     VECTOR_3    m_engine_v;
168 #define M_engine_v              generic_.m_engine_v
169 #define M_l_engine              generic_.m_engine_v[0]
170 #define M_m_engine              generic_.m_engine_v[1]
171 #define M_n_engine              generic_.m_engine_v[2]
172
173     VECTOR_3    m_gear_v;
174 #define M_gear_v                generic_.m_gear_v
175 #define M_l_gear                generic_.m_gear_v[0]
176 #define M_m_gear                generic_.m_gear_v[1]
177 #define M_n_gear                generic_.m_gear_v[2]
178
179 /*============================== Accelerations ============================*/
180
181     VECTOR_3    v_dot_local_v;
182 #define V_dot_local_v           generic_.v_dot_local_v
183 #define V_dot_north             generic_.v_dot_local_v[0]
184 #define V_dot_east              generic_.v_dot_local_v[1]
185 #define V_dot_down              generic_.v_dot_local_v[2]
186
187     VECTOR_3    v_dot_body_v;
188 #define V_dot_body_v            generic_.v_dot_body_v
189 #define U_dot_body              generic_.v_dot_body_v[0]
190 #define V_dot_body              generic_.v_dot_body_v[1]
191 #define W_dot_body              generic_.v_dot_body_v[2]
192
193     VECTOR_3    a_cg_body_v;
194 #define A_cg_body_v             generic_.a_cg_body_v
195 #define A_X_cg                  generic_.a_cg_body_v[0]
196 #define A_Y_cg                  generic_.a_cg_body_v[1]
197 #define A_Z_cg                  generic_.a_cg_body_v[2]
198
199     VECTOR_3    a_pilot_body_v;
200 #define A_pilot_body_v          generic_.a_pilot_body_v
201 #define A_X_pilot               generic_.a_pilot_body_v[0]
202 #define A_Y_pilot               generic_.a_pilot_body_v[1]
203 #define A_Z_pilot               generic_.a_pilot_body_v[2]
204
205     VECTOR_3    n_cg_body_v;
206 #define N_cg_body_v             generic_.n_cg_body_v
207 #define N_X_cg                  generic_.n_cg_body_v[0]
208 #define N_Y_cg                  generic_.n_cg_body_v[1]
209 #define N_Z_cg                  generic_.n_cg_body_v[2]
210
211     VECTOR_3    n_pilot_body_v;
212 #define N_pilot_body_v          generic_.n_pilot_body_v
213 #define N_X_pilot               generic_.n_pilot_body_v[0]
214 #define N_Y_pilot               generic_.n_pilot_body_v[1]
215 #define N_Z_pilot               generic_.n_pilot_body_v[2]
216
217     VECTOR_3    omega_dot_body_v;
218 #define Omega_dot_body_v        generic_.omega_dot_body_v
219 #define P_dot_body              generic_.omega_dot_body_v[0]
220 #define Q_dot_body              generic_.omega_dot_body_v[1]
221 #define R_dot_body              generic_.omega_dot_body_v[2]
222
223
224 /*============================== Velocities ===============================*/
225
226     VECTOR_3    v_local_v;
227 #define V_local_v               generic_.v_local_v
228 #define V_north                 generic_.v_local_v[0]
229 #define V_east                  generic_.v_local_v[1]
230 #define V_down                  generic_.v_local_v[2]
231
232     VECTOR_3    v_local_rel_ground_v;   /* V rel w.r.t. earth surface   */
233 #define V_local_rel_ground_v    generic_.v_local_rel_ground_v
234 #define V_north_rel_ground      generic_.v_local_rel_ground_v[0]
235 #define V_east_rel_ground       generic_.v_local_rel_ground_v[1]
236 #define V_down_rel_ground       generic_.v_local_rel_ground_v[2]
237
238     VECTOR_3    v_local_airmass_v;      /* velocity of airmass (steady winds)   */
239 #define V_local_airmass_v       generic_.v_local_airmass_v
240 #define V_north_airmass         generic_.v_local_airmass_v[0]
241 #define V_east_airmass          generic_.v_local_airmass_v[1]
242 #define V_down_airmass          generic_.v_local_airmass_v[2]
243
244     VECTOR_3    v_local_rel_airmass_v;  /* velocity of veh. relative to airmass */
245 #define V_local_rel_airmass_v   generic_.v_local_rel_airmass_v
246 #define V_north_rel_airmass     generic_.v_local_rel_airmass_v[0]
247 #define V_east_rel_airmass      generic_.v_local_rel_airmass_v[1]
248 #define V_down_rel_airmass      generic_.v_local_rel_airmass_v[2]
249
250     VECTOR_3    v_local_gust_v; /* linear turbulence components, L frame */
251 #define V_local_gust_v          generic_.v_local_gust_v
252 #define U_gust                  generic_.v_local_gust_v[0]
253 #define V_gust                  generic_.v_local_gust_v[1]
254 #define W_gust                  generic_.v_local_gust_v[2]
255
256     VECTOR_3    v_wind_body_v;  /* Wind-relative velocities in body axis        */
257 #define V_wind_body_v           generic_.v_wind_body_v
258 #define U_body                  generic_.v_wind_body_v[0]
259 #define V_body                  generic_.v_wind_body_v[1]
260 #define W_body                  generic_.v_wind_body_v[2]
261
262     DATA    v_rel_wind, v_true_kts, v_rel_ground, v_inertial;
263     DATA    v_ground_speed, v_equiv, v_equiv_kts;
264     DATA    v_calibrated, v_calibrated_kts;
265 #define V_rel_wind              generic_.v_rel_wind
266 #define V_true_kts              generic_.v_true_kts
267 #define V_rel_ground            generic_.v_rel_ground
268 #define V_inertial              generic_.v_inertial
269 #define V_ground_speed          generic_.v_ground_speed
270 #define V_equiv                 generic_.v_equiv
271 #define V_equiv_kts             generic_.v_equiv_kts
272 #define V_calibrated            generic_.v_calibrated
273 #define V_calibrated_kts        generic_.v_calibrated_kts
274
275     VECTOR_3    omega_body_v;   /* Angular B rates      */
276 #define Omega_body_v            generic_.omega_body_v
277 #define P_body                  generic_.omega_body_v[0]
278 #define Q_body                  generic_.omega_body_v[1]
279 #define R_body                  generic_.omega_body_v[2]
280                         
281     VECTOR_3    omega_local_v;  /* Angular L rates      */
282 #define Omega_local_v           generic_.omega_local_v
283 #define P_local                 generic_.omega_local_v[0]
284 #define Q_local                 generic_.omega_local_v[1]
285 #define R_local                 generic_.omega_local_v[2]
286
287     VECTOR_3    omega_total_v;  /* Diff btw B & L       */      
288 #define Omega_total_v           generic_.omega_total_v
289 #define P_total                 generic_.omega_total_v[0]
290 #define Q_total                 generic_.omega_total_v[1]
291 #define R_total                 generic_.omega_total_v[2]
292
293     VECTOR_3    euler_rates_v;
294 #define Euler_rates_v           generic_.euler_rates_v
295 #define Phi_dot                 generic_.euler_rates_v[0]
296 #define Theta_dot               generic_.euler_rates_v[1]
297 #define Psi_dot                 generic_.euler_rates_v[2]
298
299     VECTOR_3    geocentric_rates_v;     /* Geocentric linear velocities */
300 #define Geocentric_rates_v      generic_.geocentric_rates_v
301 #define Latitude_dot            generic_.geocentric_rates_v[0]
302 #define Longitude_dot           generic_.geocentric_rates_v[1]
303 #define Radius_dot              generic_.geocentric_rates_v[2]
304
305 /*=============================== Positions ===============================*/
306
307     VECTOR_3    geocentric_position_v;
308 #define Geocentric_position_v   generic_.geocentric_position_v
309 #define Lat_geocentric          generic_.geocentric_position_v[0]
310 #define Lon_geocentric          generic_.geocentric_position_v[1]
311 #define Radius_to_vehicle       generic_.geocentric_position_v[2]
312
313     VECTOR_3    geodetic_position_v;
314 #define Geodetic_position_v     generic_.geodetic_position_v
315 #define Latitude                generic_.geodetic_position_v[0]
316 #define Longitude               generic_.geodetic_position_v[1]
317 #define Altitude                generic_.geodetic_position_v[2]
318
319     VECTOR_3    euler_angles_v;
320 #define Euler_angles_v          generic_.euler_angles_v
321 #define Phi                     generic_.euler_angles_v[0]
322 #define Theta                   generic_.euler_angles_v[1]
323 #define Psi                     generic_.euler_angles_v[2]
324
325 /*======================= Miscellaneous quantities ========================*/
326         
327     DATA    t_local_to_body_m[3][3];    /* Transformation matrix L to B */
328 #define T_local_to_body_m       generic_.t_local_to_body_m
329 #define T_local_to_body_11      generic_.t_local_to_body_m[0][0]
330 #define T_local_to_body_12      generic_.t_local_to_body_m[0][1]
331 #define T_local_to_body_13      generic_.t_local_to_body_m[0][2]
332 #define T_local_to_body_21      generic_.t_local_to_body_m[1][0]
333 #define T_local_to_body_22      generic_.t_local_to_body_m[1][1]
334 #define T_local_to_body_23      generic_.t_local_to_body_m[1][2]
335 #define T_local_to_body_31      generic_.t_local_to_body_m[2][0]
336 #define T_local_to_body_32      generic_.t_local_to_body_m[2][1]
337 #define T_local_to_body_33      generic_.t_local_to_body_m[2][2]
338
339     DATA    gravity;            /* Local acceleration due to G  */
340 #define Gravity                 generic_.gravity
341
342     DATA    centrifugal_relief; /* load factor reduction due to speed */
343 #define Centrifugal_relief      generic_.centrifugal_relief
344
345     DATA    alpha, beta, alpha_dot, beta_dot;   /* in radians   */
346 #define Alpha                   generic_.alpha
347 #define Beta                    generic_.beta
348 #define Alpha_dot               generic_.alpha_dot
349 #define Beta_dot                generic_.beta_dot
350
351     DATA    cos_alpha, sin_alpha, cos_beta, sin_beta;
352 #define Cos_alpha               generic_.cos_alpha
353 #define Sin_alpha               generic_.sin_alpha
354 #define Cos_beta                generic_.cos_beta
355 #define Sin_beta                generic_.sin_beta
356
357     DATA    cos_phi, sin_phi, cos_theta, sin_theta, cos_psi, sin_psi;
358 #define Cos_phi                 generic_.cos_phi
359 #define Sin_phi                 generic_.sin_phi
360 #define Cos_theta               generic_.cos_theta
361 #define Sin_theta               generic_.sin_theta
362 #define Cos_psi                 generic_.cos_psi
363 #define Sin_psi                 generic_.sin_psi
364         
365     DATA    gamma_vert_rad, gamma_horiz_rad;    /* Flight path angles   */
366 #define Gamma_vert_rad          generic_.gamma_vert_rad
367 #define Gamma_horiz_rad         generic_.gamma_horiz_rad
368         
369     DATA    sigma, density, v_sound, mach_number;
370 #define Sigma                   generic_.sigma
371 #define Density                 generic_.density
372 #define V_sound                 generic_.v_sound
373 #define Mach_number             generic_.mach_number
374         
375     DATA    static_pressure, total_pressure, impact_pressure, dynamic_pressure;
376 #define Static_pressure         generic_.static_pressure
377 #define Total_pressure          generic_.total_pressure
378 #define Impact_pressure         generic_.impact_pressure
379 #define Dynamic_pressure        generic_.dynamic_pressure
380
381     DATA    static_temperature, total_temperature;
382 #define Static_temperature      generic_.static_temperature
383 #define Total_temperature       generic_.total_temperature
384         
385     DATA    sea_level_radius, earth_position_angle;
386 #define Sea_level_radius        generic_.sea_level_radius
387 #define Earth_position_angle    generic_.earth_position_angle
388         
389     DATA    runway_altitude, runway_latitude, runway_longitude, runway_heading;
390 #define Runway_altitude         generic_.runway_altitude
391 #define Runway_latitude         generic_.runway_latitude
392 #define Runway_longitude        generic_.runway_longitude
393 #define Runway_heading          generic_.runway_heading
394
395     DATA    radius_to_rwy;
396 #define Radius_to_rwy           generic_.radius_to_rwy
397         
398     VECTOR_3    d_cg_rwy_local_v;       /* CG rel. to rwy in local coords */
399 #define D_cg_rwy_local_v        generic_.d_cg_rwy_local_v
400 #define D_cg_north_of_rwy       generic_.d_cg_rwy_local_v[0]
401 #define D_cg_east_of_rwy        generic_.d_cg_rwy_local_v[1]
402 #define D_cg_above_rwy          generic_.d_cg_rwy_local_v[2]
403
404     VECTOR_3    d_cg_rwy_rwy_v; /* CG relative to runway, in rwy coordinates */
405 #define D_cg_rwy_rwy_v          generic_.d_cg_rwy_rwy_v
406 #define X_cg_rwy                generic_.d_cg_rwy_rwy_v[0]
407 #define Y_cg_rwy                generic_.d_cg_rwy_rwy_v[1]
408 #define H_cg_rwy                generic_.d_cg_rwy_rwy_v[2]
409
410     VECTOR_3    d_pilot_rwy_local_v;    /* pilot rel. to rwy in local coords */
411 #define D_pilot_rwy_local_v     generic_.d_pilot_rwy_local_v
412 #define D_pilot_north_of_rwy    generic_.d_pilot_rwy_local_v[0]
413 #define D_pilot_east_of_rwy     generic_.d_pilot_rwy_local_v[1]
414 #define D_pilot_above_rwy       generic_.d_pilot_rwy_local_v[2]
415
416     VECTOR_3   d_pilot_rwy_rwy_v;       /* pilot rel. to rwy, in rwy coords. */
417 #define D_pilot_rwy_rwy_v       generic_.d_pilot_rwy_rwy_v
418 #define X_pilot_rwy             generic_.d_pilot_rwy_rwy_v[0]
419 #define Y_pilot_rwy             generic_.d_pilot_rwy_rwy_v[1]
420 #define H_pilot_rwy             generic_.d_pilot_rwy_rwy_v[2]
421
422
423 } GENERIC;
424
425 extern GENERIC generic_;        /* usually defined in ls_main.c */
426
427
428 #ifdef __cplusplus
429 }
430 #endif
431
432
433 #endif /* _LS_GENERIC_H */
434
435
436 /*---------------------------  end of ls_generic.h  ------------------------*/