|
@@ -177,6 +177,7 @@ double xodrfunc::GetParamPoly3Dis(GeometryParamPoly3 * parc,double xnow,double y
|
|
|
double xodrfunc::GetArcDis(GeometryArc * parc,double x,double y,double & nearx,
|
|
|
double & neary,double & nearhead,double & frels)
|
|
|
{
|
|
|
+ frels = 0.0;
|
|
|
|
|
|
if((parc->GetS()>370)&&(parc->GetS()<370.1))
|
|
|
{
|
|
@@ -187,7 +188,7 @@ double xodrfunc::GetArcDis(GeometryArc * parc,double x,double y,double & nearx,
|
|
|
|
|
|
double R = fabs(1.0/parc->GetCurvature());
|
|
|
|
|
|
- frels = 0.0;
|
|
|
+
|
|
|
|
|
|
//calculate arc center
|
|
|
double x_center,y_center;
|
|
@@ -294,7 +295,7 @@ double xodrfunc::GetArcDis(GeometryArc * parc,double x,double y,double & nearx,
|
|
|
}
|
|
|
while(nearhead>2.0*M_PI)nearhead = nearhead -2.0*M_PI;
|
|
|
while(nearhead<0)nearhead = nearhead + 2.0*M_PI;
|
|
|
- hdgdiff = (nearhead-parc->GetHdg())*(parc->GetCurvature()/abs(parc->GetCurvature()));
|
|
|
+ hdgdiff = (nearhead-parc->GetHdg())*(parc->GetCurvature()/fabs(parc->GetCurvature()));
|
|
|
if(hdgdiff>=2.0*M_PI)hdgdiff = hdgdiff - 2.0*M_PI;
|
|
|
if(hdgdiff<0)hdgdiff = hdgdiff + 2.0*M_PI;
|
|
|
frels = hdgdiff * R;
|
|
@@ -312,7 +313,7 @@ double xodrfunc::GetArcDis(GeometryArc * parc,double x,double y,double & nearx,
|
|
|
}
|
|
|
while(nearhead>2.0*M_PI)nearhead = nearhead -2.0*M_PI;
|
|
|
while(nearhead<0)nearhead = nearhead + 2.0*M_PI;
|
|
|
- hdgdiff = (nearhead-parc->GetHdg())*(parc->GetCurvature()/abs(parc->GetCurvature()));
|
|
|
+ hdgdiff = (nearhead-parc->GetHdg())*(parc->GetCurvature()/fabs(parc->GetCurvature()));
|
|
|
if(hdgdiff>=2.0*M_PI)hdgdiff = hdgdiff - 2.0*M_PI;
|
|
|
if(hdgdiff<0)hdgdiff = hdgdiff + 2.0*M_PI;
|
|
|
frels = hdgdiff * R;
|
|
@@ -334,6 +335,7 @@ double xodrfunc::GetArcDis(GeometryArc * parc,double x,double y,double & nearx,
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
while(nearhead>2.0*M_PI)nearhead = nearhead -2.0*M_PI;
|
|
|
while(nearhead<0)nearhead = nearhead + 2.0*M_PI;
|
|
|
return fdismin;
|
|
@@ -519,6 +521,8 @@ double xodrfunc::GetLineDis(GeometryLine * pline,const double x,const double y,d
|
|
|
|
|
|
frels = sqrt(pow(nearx - pline->GetX(),2)+pow(neary - pline->GetY(),2));
|
|
|
|
|
|
+// qDebug("frels is %f",frels);
|
|
|
+
|
|
|
return fRtn;
|
|
|
|
|
|
|