// constants.h -- various constant definitions
//
// Written by Curtis Olson, started February 2000.
+// Last change by Eric van den Berg, Feb 2013
//
// Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt/
//
#include <cmath>
-#include <plib/sg.h>
+// Make sure PI is defined in its various forms
+#ifndef SGD_PI // remove me once FlightGear no longer uses PLIB
-// Make sure PI is defined in its various forms
+#ifdef M_PI
+const double SGD_PI = M_PI;
+const float SG_PI = M_PI;
+#else
+const float SG_PI = 3.1415926535f;
+const double SGD_PI = 3.1415926535;
+#endif
-// SG_PI and SGD_PI (float and double) come from plib/sg.h
+#endif // of PLIB-SG guard
/** 2 * PI */
-#define SGD_2PI 6.28318530717958647692
+const double SGD_2PI = SGD_PI * 2.0;
/** PI / 2 */
#ifdef M_PI_2
#endif
/** PI / 4 */
-#define SGD_PI_4 0.78539816339744830961
+const double SGD_PI_4 = 0.78539816339744830961;
+
+#ifndef SGD_DEGREES_TO_RADIANS // // remove me once FlightGear no longer uses PLIB
+
+const double SGD_DEGREES_TO_RADIANS = SGD_PI / 180.0;
+const double SGD_RADIANS_TO_DEGREES = 180.0 / SGD_PI;
+
+const float SG_DEGREES_TO_RADIANS = SG_PI / 180.0f;
+const float SG_RADIANS_TO_DEGREES = 180.0f / SG_PI;
+
+#endif // of PLIB-SG guard
/** \def SG_E "e" */
#ifdef M_E
/** Radius squared (meter) */
#define SG_EQ_RAD_SQUARE_M 40680645877797.1344
+
+// Physical Constants, SI
+
+/**mean gravity on earth */
+#define SG_g0_m_p_s2 9.80665 // m/s2
+
+/**standard pressure at SL */
+#define SG_p0_Pa 101325.0 // Pa
+
+/**standard density at SL */
+#define SG_rho0_kg_p_m3 1.225 // kg/m3
+
+/**standard temperature at SL */
+#define SG_T0_K 288.15 // K (=15degC)
+
+/**specific gas constant of air*/
+#define SG_R_m2_p_s2_p_K 287.05 // m2/s2/K
+
+/**specific heat constant at constant pressure*/
+#define SG_cp_m2_p_s2_p_K 1004.68 // m2/s2/K
+
+/**ratio of specific heats of air*/
+#define SG_gamma 1.4 // =cp/cv (cp = 1004.68 m2/s2 K , cv = 717.63 m2/s2 K)
+
+/**constant beta used to calculate dynamic viscosity */
+#define SG_beta_kg_p_sm_sqrK 1.458e-06 // kg/s/m/SQRT(K)
+
+/** Sutherland constant */
+#define SG_S_K 110.4 // K
+
+
// Conversions
/** Arc seconds to radians. (arcsec*pi)/(3600*180) = rad */
/** Inch Mercury to Pascal */
#define SG_INHG_TO_PA 3386.388640341
+/** slug/ft3 to kg/m3 */
+#define SG_SLUGFT3_TO_KGPM3 515.379
+
/** For divide by zero avoidance, this will be close enough to zero */
#define SG_EPSILON 0.0000001