From 709936a265cdca41ca3c2b23a60839a3f2b28ffb Mon Sep 17 00:00:00 2001 From: Erik Hofman Date: Thu, 8 Dec 2016 01:03:26 +0100 Subject: [PATCH] MSVC fixes --- src/FDM/SP/AISim.cpp | 28 ++++++++++++++-------------- src/FDM/SP/AISim.hpp | 8 ++++---- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/FDM/SP/AISim.cpp b/src/FDM/SP/AISim.cpp index 47ef6d0ae..1e866d88b 100644 --- a/src/FDM/SP/AISim.cpp +++ b/src/FDM/SP/AISim.cpp @@ -97,7 +97,7 @@ FGAISim::init() { UVW_body[U] = fgGetFloat("sim/presets/uBody-fps"); UVW_body[V] = fgGetFloat("sim/presets/vBody-fps"); UVW_body[W] = fgGetFloat("sim/presets/wBody-fps"); - set_velocity_fps( simd4::magnitude(UVW_body) ); + set_velocity_fps( UVW_body[U] ); } void @@ -120,17 +120,17 @@ FGAISim::update(double ddt) // Earth-to-Body-Axis Transformation Matrix // body = pitch, roll, yaw - simd4_t angles = euler; + simd4_t angles = euler; float angle = simd4::normalize(angles); simd4x4_t EBM = simd4x4::rotation_matrix(angle, angles); // Body-Axis Gravity Components - simd4_t gb = EBM*simd4_t(gravity); - simd4_t windb = EBM*simd4_t(wind_ned); + simd4_t gb = EBM*gravity; + simd4_t windb = EBM*wind_ned; // Air-Relative velocity vector - simd4_t Va = UVW_body + simd4_t(windb); - update_UVW_body(simd4::magnitude(Va)); + simd4_t Va = UVW_body + windb; + set_velocity_fps(Va[U]); if (std::abs(velocity) > 1.0f) { set_alpha_rad( std::atan(Va[3]/std::abs(Va[1])) ); set_beta_rad( std::asin(Va[2]/velocity) ); @@ -178,15 +178,15 @@ FGAISim::update(double ddt) FXYZ += FThrust; // MlmnT += MThrust; - // Gear forces - http://tutorial.math.lamar.edu/Classes/DE/Vibrations.aspx - if (0) { // WoW - simd4_t FLMLG = 0.0f, FRLMG = 0.0f, FNLG = 0.0f; - float gear_comp = 1.0f + _MINMAX(agl/gear[Z], -1.0f, 0.0f); - FNLG[Z] = FLMLG[Z] = FRLMG[Z] = Cgear*gear_comp; - simd4_t FLGear = 0.0f, MLGear = 0.0f; + // Gear forces + float gear_comp = 0.2f + _MINMAX(agl/gear[Z], -0.2f, 0.0f); +printf("agl: %7.6f, gear-z: %7.6f, comp: %f\n", agl, gear[Z], gear_comp); + if (gear_comp > 0.1f) { + simd4_t FLGear = 0.0f; FLGear[Z] = Cgear*gear_comp; +// simd4_t MLGear = 0.0f; FXYZ += FLGear; - MlmnT += MLGear; +// MlmnT += MLGear; } FXYZ /= m; @@ -205,7 +205,7 @@ printf("UVW: %5.4f, %5.4f, %5.4f\n", dUVW[U], dUVW[V], dUVW[W]); /* position of center of mass wrt earth: north, east, down */ simd4_t dNED_cm; - dNED_cm = simd4x4::transpose(EBM)*simd4_t(UVW_body); + dNED_cm = simd4x4::transpose(EBM)*UVW_body; double az2, dist = simd4::magnitude(dNED_cm); SGGeod pos2, pos = getPosition(); diff --git a/src/FDM/SP/AISim.hpp b/src/FDM/SP/AISim.hpp index e65f59db0..f81c300cf 100644 --- a/src/FDM/SP/AISim.hpp +++ b/src/FDM/SP/AISim.hpp @@ -160,14 +160,14 @@ private: float br; /* brake */ /* aircraft state */ - simd4_t NED_cm; /* lat, lon, altitude */ - simd4_t UVW_body; /* fwd, up, side speed */ + simd4_t NED_cm; /* lat, lon, altitude */ + simd4_t UVW_body; /* fwd, up, side speed */ simd4_t PQR_body; /* P, Q, R rate */ simd4_t PQR_dot; /* Pdot, Qdot, Rdot accel. */ simd4_t ABY_body; /* alpha, beta, gamma */ simd4_t ABY_dot; /* adot, bdot, ydot */ simd4_t euler; /* phi, theta, psi */ - simd4_t wind_ned; + simd4_t wind_ned; float agl, velocity; /* history, these change between every call to update() */ @@ -209,7 +209,7 @@ private: /* static environment data */ static float env[101][2]; - simd4_t gravity; + simd4_t gravity; float dt2_2m; };