]> git.mxchange.org Git - flightgear.git/commitdiff
Fix issues exposed by PLIB-free SimGear.
authorJames Turner <zakalawe@mac.com>
Fri, 23 Jul 2010 08:41:37 +0000 (09:41 +0100)
committerJames Turner <zakalawe@mac.com>
Fri, 23 Jul 2010 08:41:37 +0000 (09:41 +0100)
src/AIModel/AIFlightPlan.cxx
src/AIModel/AIFlightPlanCreateCruise.cxx
src/Environment/fgclouds.cxx
src/Main/viewmgr.cxx

index 381f9e94498f0680d44eaab337aa4a08005edf04..8f985ddcd28dece49a4cd1376125d843b2ab9d86 100644 (file)
@@ -175,20 +175,12 @@ FGAIFlightPlan::FGAIFlightPlan(FGAIAircraft *ac,
            if (wpt->name == "END") wpt->finished = true;
            else wpt->finished = false;
            waypoints.push_back(wpt);
-         }
-       }
-      catch (const sg_exception &) {
-       SG_LOG(SG_GENERAL, SG_WARN,
-              "Error reading AI flight plan: ");
-       cerr << "Errno = " << errno << endl;
-       if (errno == ENOENT)
-         {
-           SG_LOG(SG_GENERAL, SG_WARN, "Reason: No such file or directory");
-         }
-      }
+         } // of node loop
+       } catch (const sg_exception &e) {
+      SG_LOG(SG_GENERAL, SG_WARN, "Error reading AI flight plan: " << 
+        e.getMessage() << " from " << e.getOrigin());
     }
-  else
-    {
+  } else {
       // cout << path.str() << endl;
       // cout << "Trying to create this plan dynamically" << endl;
       // cout << "Route from " << dep->id << " to " << arr->id << endl;
index d20a2134be25c086e7ac21b538d03a0744f5b61f..13df4b6072425b93218866be5b0b6420e5f52fe8 100644 (file)
@@ -38,7 +38,6 @@
 #include "AIAircraft.hxx"
 #include "performancedata.hxx"
 
-
 using std::iostream;
 
 void FGAIFlightPlan::evaluateRoutePart(double deplat,
@@ -55,28 +54,18 @@ void FGAIFlightPlan::evaluateRoutePart(double deplat,
   SGGeoc arr(SGGeoc::fromDegM(arrlon, arrlat, 100.0));
   
   SGVec3d a = SGVec3d::fromGeoc(dep);
-  SGVec3d b = SGVec3d::fromGeoc(arr);
-  SGVec3d _cross = cross(b, a);
+  SGVec3d nb = normalize(SGVec3d::fromGeoc(arr));
+  SGVec3d na = normalize(a);
+  
+  SGVec3d _cross = cross(nb, na);
 
-  double angle = sgACos(dot(a, b));
+  double angle = acos(dot(na, nb));
+  const double angleStep = 0.05 * SG_DEGREES_TO_RADIANS;
   tmpNode = 0;
-  for (double ang = 0.0; ang < angle; ang += 0.05)
-  {
-      sgdVec3 newPos;
-      sgdMat4 matrix;
-      //cerr << "Angle = " << ang << endl;
-      sgdMakeRotMat4(matrix, ang, _cross.data());
-      for(int j = 0; j < 3; j++)
-      {
-        newPos[j] =0.0;
-        for (int k = 0; k<3; k++)
-        {
-          newPos[j] += matrix[j][k]*a[k];
-        }
-      }
-      
-      //cerr << "1"<< endl;
-      SGGeod geod = SGGeod::fromCart(SGVec3d(newPos[0], newPos[1], newPos[2]));
+  for (double ang = 0.0; ang < angle; ang += angleStep)
+  {  
+      SGQuatd q = SGQuatd::fromAngleAxis(ang, _cross);
+      SGGeod geod = SGGeod::fromCart(q.transform(a));
 
       prevNode = tmpNode;
       tmpNode = globals->get_airwaynet()->findNearestNode(geod);
index 606a4973e8a5e2ae964b619a46dfefcf07e6a514..f58d324f407e373620a0e7a2a3368606ee195377 100644 (file)
@@ -100,8 +100,7 @@ double FGClouds::buildCloud(SGPropertyNode *cloud_def_root, SGPropertyNode *box_
        double y = sg_random() * SGCloudField::fieldSize - (SGCloudField::fieldSize / 2.0);
        double z = grid_z_rand * (sg_random() - 0.5);
                
-       sgVec3 pos={x,y,z};
-       
+       SGVec3f pos(x,y,z);
         
        for(int i = 0; i < box_def->nChildren() ; i++) {
                SGPropertyNode *abox = box_def->getChild(i);
index 270c579e03b82dcfd89457b8a8dd9b472bead2d5..6859c8f412ee5306ddaf1d91630b717149ce77d4 100644 (file)
@@ -190,7 +190,7 @@ FGViewMgr::bind ()
 
   fgTie("/sim/current-view/view-number", this,
                       &FGViewMgr::getView, &FGViewMgr::setView);
-  fgSetArchivable("/sim/current-view/view-number", FALSE);
+  fgSetArchivable("/sim/current-view/view-number", false);
 
   fgTie("/sim/current-view/axes/long", this,
        (double_getter)0, &FGViewMgr::setViewAxisLong);