瀏覽代碼

Merge branch 'master' into 1+x

lijinliang 3 年之前
父節點
當前提交
10156e9694
共有 1 個文件被更改,包括 34 次插入2 次删除
  1. 34 2
      src/tool/tool_xodrobj/mainwindow.cpp

+ 34 - 2
src/tool/tool_xodrobj/mainwindow.cpp

@@ -79,10 +79,17 @@ static int getmnfac(OpenDrive & mxodr,double & fmovex,double & fmovey)
     fxmax = std::numeric_limits<double>::max()*(-1.0);
     fymin = std::numeric_limits<double>::max() *(1.0);
     fymax = std::numeric_limits<double>::max()*(-1.0);
+    bool bHaveRealRoad = false;
     for(i=0;i<mxodr.GetRoadCount();i++)
     {
         int j;
+
         Road * pRoad = mxodr.GetRoad(i);
+        if(pRoad->GetRoadLength()<0.1)
+        {
+            continue;
+        }
+        bHaveRealRoad = true;
         for(j=0;j<mxodr.GetRoad(i)->GetGeometryBlockCount();j++)
         {
             GeometryBlock * pgeob = pRoad->GetGeometryBlock(j);
@@ -100,6 +107,19 @@ static int getmnfac(OpenDrive & mxodr,double & fmovex,double & fmovey)
             if(y<fymin)fymin = y;
 
         }
+
+        double x,y,hdg;
+        pRoad->GetGeometryCoords(pRoad->GetRoadLength()-0.1,x,y,hdg);
+        if(x>fxmax)fxmax = x;
+        if(x<fxmin)fxmin = x;
+        if(y>fymax)fymax = y;
+        if(y<fymin)fymin = y;
+    }
+
+    if(bHaveRealRoad == false)
+    {
+        std::cout<<"No Real Road."<<std::endl;
+        return 1.0;
     }
 
     fmovex = 0;
@@ -114,8 +134,20 @@ static int getmnfac(OpenDrive & mxodr,double & fmovex,double & fmovey)
         fmovey = (fymax + fymin)/2.0;
     }
 
-    int nfacx = (VIEW_WIDTH/2)/(fxmax*1.2);
-    int nfacy = (VIEW_HEIGHT/2)/(fymax*1.2);
+    double fabsxmax = fabs(fxmax);
+    if(fabsxmax < fabs(fxmin))fabsxmax = fabs(fxmin);
+    double fabsymax = fabs(fymax);
+    if(fabsymax < fabs(fymin))fabsymax = fabs(fymin);
+    int nfacx=1;
+    if(fabsxmax!= 0)
+    {
+        nfacx = (VIEW_WIDTH/2)/(fabsxmax*1.2);
+    }
+    int nfacy = 1;
+    if(fabsymax != 0)
+    {
+        nfacy = (VIEW_HEIGHT/2)/(fabsymax*1.2);
+    }
     if(nfacx<1)nfacx = 1;
     if(nfacy<1)nfacy = 1;