]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/FGLocation.cpp
Fix stall widths for the "auxilliary" (reverse flow) stalls so they
[flightgear.git] / src / FDM / JSBSim / FGLocation.cpp
index 758ce3a80f92d7649ee5958f5ca59deb47599f7d..83484c0de4a88ab26799d7a5ec9f7f6b1dc210fb 100644 (file)
@@ -82,15 +82,20 @@ FGLocation::FGLocation(double lon, double lat, double radius)
 
 void FGLocation::SetLongitude(double longitude)
 {
-  double rtmp = sqrt(mECLoc(eX)*mECLoc(eX) + mECLoc(eY)*mECLoc(eY));
+  double rtmp = mECLoc.Magnitude(eX, eY);
+  // Check if we have zero radius.
+  // If so set it to 1, so that we can set a position
+  if (0.0 == mECLoc.Magnitude())
+    rtmp = 1.0;
+
   // Fast return if we are on the north or south pole ...
   if (rtmp == 0.0)
     return;
 
   mCacheValid = false;
 
-  mECLoc(eX) = rtmp*sin(longitude);
-  mECLoc(eY) = rtmp*cos(longitude);
+  mECLoc(eX) = rtmp*cos(longitude);
+  mECLoc(eY) = rtmp*sin(longitude);
 }
 
 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -105,7 +110,7 @@ void FGLocation::SetLatitude(double latitude)
     r = 1.0;
   }
 
-  double rtmp = sqrt(mECLoc(eX)*mECLoc(eX) + mECLoc(eY)*mECLoc(eY));
+  double rtmp = mECLoc.Magnitude(eX, eY);
   if (rtmp != 0.0) {
     double fac = r/rtmp*cos(latitude);
     mECLoc(eX) *= fac;