|
@@ -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;
|
|
|
|