From 23ab95802b39ef1b9b85b0a5d28dc12ec6cc1362 Mon Sep 17 00:00:00 2001 From: andy Date: Wed, 10 Jan 2007 18:58:50 +0000 Subject: [PATCH] Patch from Joacim to export the inertia tensor from the command line solver. --- src/FDM/YASim/RigidBody.hpp | 3 +++ src/FDM/YASim/yasim-test.cpp | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/FDM/YASim/RigidBody.hpp b/src/FDM/YASim/RigidBody.hpp index b34b5a482..6e4a4ad30 100644 --- a/src/FDM/YASim/RigidBody.hpp +++ b/src/FDM/YASim/RigidBody.hpp @@ -97,6 +97,9 @@ public: // Returns the instantaneous rate of change of the angular // velocity, as a vector in local coordinates. void getAngularAccel(float* accelOut); + + // Returns the intertia tensor in a float[9] allocated by caller. + void getInertiaMatrix(float* inertiaOut); private: struct Mass { float m; float p[3]; }; diff --git a/src/FDM/YASim/yasim-test.cpp b/src/FDM/YASim/yasim-test.cpp index c2a5fd742..ebda62476 100644 --- a/src/FDM/YASim/yasim-test.cpp +++ b/src/FDM/YASim/yasim-test.cpp @@ -103,6 +103,10 @@ int main(int argc, char** argv) float drag = 1000 * a->getDragCoefficient(); float cg[3]; a->getModel()->getBody()->getCG(cg); + a->getModel()->getBody()->recalc(); + + float SI_inertia[9]; + a->getModel()->getBody()->getInertiaMatrix(SI_inertia); printf("Solution results:"); printf(" Iterations: %d\n", a->getSolutionIterations()); @@ -111,7 +115,10 @@ int main(int argc, char** argv) printf(" Cruise AoA: %f\n", aoa); printf(" Tail Incidence: %f\n", tail); printf("Approach Elevator: %f\n", a->getApproachElevator()); - printf(" CG: %.3f, %.3f, %.3f\n", cg[0], cg[1], cg[2]); + printf(" CG: x:%.3f, y:%.3f, z:%.3f\n\n", cg[0], cg[1], cg[2]); + printf(" Inertia tensor : %.3f, %.3f, %.3f\n", SI_inertia[0], SI_inertia[1], SI_inertia[2]); + printf(" [kg*m^2] %.3f, %.3f, %.3f\n", SI_inertia[3], SI_inertia[4], SI_inertia[5]); + printf(" Origo at CG %.3f, %.3f, %.3f\n", SI_inertia[6], SI_inertia[7], SI_inertia[8]); } delete fdm; return 0;