]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/FGColumnVector3.cpp
Make yasim accept the launchbar and hook properties. They are not tied to anything...
[flightgear.git] / src / FDM / JSBSim / FGColumnVector3.cpp
index 0e9c1060eafd0d6f63c4a1b766053edc78d914af..a52cc6e1052a6918eab1b8ca3b116f6e2a59fddd 100644 (file)
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
-\r
-Module: FGColumnVector3.cpp\r
-Author: Originally by Tony Peden [formatted here (and broken??) by JSB]\r
-Date started: 1998\r
-Purpose: FGColumnVector3 class\r
-Called by: Various\r
-\r
-FUNCTIONAL DESCRIPTION\r
---------------------------------------------------------------------------------\r
-\r
-HISTORY\r
---------------------------------------------------------------------------------\r
-??/??/??   TP   Created\r
-03/16/2000 JSB  Added exception throwing\r
-\r
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
-INCLUDES\r
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/\r
-\r
-#include "FGColumnVector3.h"\r
-\r
-namespace JSBSim {\r
-\r
-static const char *IdSrc = "$Id$";\r
-static const char *IdHdr = ID_COLUMNVECTOR3;\r
-\r
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
-CLASS IMPLEMENTATION\r
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/\r
-\r
-FGColumnVector3::FGColumnVector3(void)\r
-{\r
-  data[0] = data[1] = data[2] = 0.0;\r
-  Debug(0);\r
-}\r
-\r
-//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
-\r
-FGColumnVector3 FGColumnVector3::operator/(const double scalar) const\r
-{\r
-  if (scalar != 0.0)\r
-    return operator*( 1.0/scalar );\r
-\r
-  cerr << "Attempt to divide by zero in method "\r
-    "FGColumnVector3::operator/(const double scalar), "\r
-    "object " << this << endl; \r
-  return FGColumnVector3();\r
-}\r
-\r
-//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
-\r
-FGColumnVector3& FGColumnVector3::operator/=(const double scalar)\r
-{\r
-  if (scalar != 0.0)\r
-    operator*=( 1.0/scalar );\r
-  else\r
-    cerr << "Attempt to divide by zero in method "\r
-      "FGColumnVector3::operator/=(const double scalar), "\r
-      "object " << this << endl;\r
-\r
-  return *this;\r
-}\r
-\r
-//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
-\r
-double FGColumnVector3::Magnitude(void) const\r
-{\r
-  if (data[1] == 0.0 && data[2] == 0.0 && data[3] == 0.0)\r
-    return 0.0;\r
-  else\r
-    return sqrt( Entry(1)*Entry(1) +  Entry(2)*Entry(2) +  Entry(3)*Entry(3) );\r
-}\r
-\r
-//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
-\r
-FGColumnVector3& FGColumnVector3::Normalize(void)\r
-{\r
-  double Mag = Magnitude();\r
-\r
-  if (Mag != 0.0)\r
-    operator*=( 1.0/Mag );\r
-\r
-  return *this;\r
-}\r
-\r
-//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
-\r
-FGColumnVector3 FGColumnVector3::multElementWise(const FGColumnVector3& V) const\r
-{\r
-  return FGColumnVector3(Entry(1) * V(1), Entry(2) * V(2), Entry(3) * V(3));\r
-}\r
-\r
-//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
-\r
-ostream& operator<<(ostream& os, const FGColumnVector3& col)\r
-{\r
-  os << col(1) << " , " << col(2) << " , " << col(3);\r
-  return os;\r
-}  \r
-\r
-/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/\r
-//    The bitmasked value choices are as follows:\r
-//    unset: In this case (the default) JSBSim would only print\r
-//       out the normally expected messages, essentially echoing\r
-//       the config files as they are read. If the environment\r
-//       variable is not set, debug_lvl is set to 1 internally\r
-//    0: This requests JSBSim not to output any messages\r
-//       whatsoever.\r
-//    1: This value explicity requests the normal JSBSim\r
-//       startup messages\r
-//    2: This value asks for a message to be printed out when\r
-//       a class is instantiated\r
-//    4: When this value is set, a message is displayed when a\r
-//       FGModel object executes its Run() method\r
-//    8: When this value is set, various runtime state variables\r
-//       are printed out periodically\r
-//    16: When set various parameters are sanity checked and\r
-//       a message is printed out when they go out of bounds\r
-\r
-void FGColumnVector3::Debug(int from)\r
-{\r
-  if (debug_lvl <= 0) return;\r
-\r
-  if (debug_lvl & 1) { // Standard console startup message output\r
-  }\r
-  if (debug_lvl & 2 ) { // Instantiation/Destruction notification\r
-    if (from == 0) cout << "Instantiated: FGColumnVector3" << endl;\r
-    if (from == 1) cout << "Destroyed:    FGColumnVector3" << endl;\r
-  }\r
-  if (debug_lvl & 4 ) { // Run() method entry print for FGModel-derived objects\r
-  }\r
-  if (debug_lvl & 8 ) { // Runtime state variables\r
-  }\r
-  if (debug_lvl & 16) { // Sanity checking\r
-  }\r
-  if (debug_lvl & 64) {\r
-    if (from == 0) { // Constructor\r
-      cout << IdSrc << endl;\r
-      cout << IdHdr << endl;\r
-    }\r
-  }\r
-}\r
-\r
-} // namespace JSBSim\r
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Module: FGColumnVector3.cpp
+Author: Originally by Tony Peden [formatted here (and broken??) by JSB]
+Date started: 1998
+Purpose: FGColumnVector3 class
+Called by: Various
+
+FUNCTIONAL DESCRIPTION
+--------------------------------------------------------------------------------
+
+HISTORY
+--------------------------------------------------------------------------------
+??/??/??   TP   Created
+03/16/2000 JSB  Added exception throwing
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+INCLUDES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+#include "FGColumnVector3.h"
+#include <cstdio>
+
+namespace JSBSim {
+
+static const char *IdSrc = "$Id$";
+static const char *IdHdr = ID_COLUMNVECTOR3;
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CLASS IMPLEMENTATION
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+FGColumnVector3::FGColumnVector3(void)
+{
+  data[0] = data[1] = data[2] = 0.0;
+  Debug(0);
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+string FGColumnVector3::Dump(string delimeter) const
+{
+  char buffer[256];
+  sprintf(buffer, "%f%s%f%s%f", Entry(1), delimeter.c_str(), Entry(2), delimeter.c_str(), Entry(3));
+  return string(buffer);
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FGColumnVector3 FGColumnVector3::operator/(const double scalar) const
+{
+  if (scalar != 0.0)
+    return operator*( 1.0/scalar );
+
+  cerr << "Attempt to divide by zero in method "
+    "FGColumnVector3::operator/(const double scalar), "
+    "object " << this << endl;
+  return FGColumnVector3();
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FGColumnVector3& FGColumnVector3::operator/=(const double scalar)
+{
+  if (scalar != 0.0)
+    operator*=( 1.0/scalar );
+  else
+    cerr << "Attempt to divide by zero in method "
+      "FGColumnVector3::operator/=(const double scalar), "
+      "object " << this << endl;
+
+  return *this;
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+double FGColumnVector3::Magnitude(void) const
+{
+  if (Entry(1) == 0.0 && Entry(2) == 0.0 && Entry(3) == 0.0)
+    return 0.0;
+  else
+    return sqrt( Entry(1)*Entry(1) +  Entry(2)*Entry(2) +  Entry(3)*Entry(3) );
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FGColumnVector3& FGColumnVector3::Normalize(void)
+{
+  double Mag = Magnitude();
+
+  if (Mag != 0.0)
+    operator*=( 1.0/Mag );
+
+  return *this;
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FGColumnVector3 FGColumnVector3::multElementWise(const FGColumnVector3& V) const
+{
+  return FGColumnVector3(Entry(1) * V(1), Entry(2) * V(2), Entry(3) * V(3));
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ostream& operator<<(ostream& os, const FGColumnVector3& col)
+{
+  os << col(1) << " , " << col(2) << " , " << col(3);
+  return os;
+}
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+//    The bitmasked value choices are as follows:
+//    unset: In this case (the default) JSBSim would only print
+//       out the normally expected messages, essentially echoing
+//       the config files as they are read. If the environment
+//       variable is not set, debug_lvl is set to 1 internally
+//    0: This requests JSBSim not to output any messages
+//       whatsoever.
+//    1: This value explicity requests the normal JSBSim
+//       startup messages
+//    2: This value asks for a message to be printed out when
+//       a class is instantiated
+//    4: When this value is set, a message is displayed when a
+//       FGModel object executes its Run() method
+//    8: When this value is set, various runtime state variables
+//       are printed out periodically
+//    16: When set various parameters are sanity checked and
+//       a message is printed out when they go out of bounds
+
+void FGColumnVector3::Debug(int from)
+{
+  if (debug_lvl <= 0) return;
+
+  if (debug_lvl & 1) { // Standard console startup message output
+  }
+  if (debug_lvl & 2 ) { // Instantiation/Destruction notification
+    if (from == 0) cout << "Instantiated: FGColumnVector3" << endl;
+    if (from == 1) cout << "Destroyed:    FGColumnVector3" << endl;
+  }
+  if (debug_lvl & 4 ) { // Run() method entry print for FGModel-derived objects
+  }
+  if (debug_lvl & 8 ) { // Runtime state variables
+  }
+  if (debug_lvl & 16) { // Sanity checking
+  }
+  if (debug_lvl & 64) {
+    if (from == 0) { // Constructor
+      cout << IdSrc << endl;
+      cout << IdHdr << endl;
+    }
+  }
+}
+
+} // namespace JSBSim