|
@@ -435,6 +435,22 @@ static void ToGPSTrace(std::vector<PlanPoint> xPlan)
|
|
|
ShareMap(mapdata);
|
|
|
}
|
|
|
|
|
|
+int avoidroadid[] = {10002,10019,10003,10098,10099,10063};
|
|
|
+
|
|
|
+inline bool isboringroad(int nroadid)
|
|
|
+{
|
|
|
+ int i;
|
|
|
+ bool brtn = false;
|
|
|
+ for(i=0;i<6;i++)
|
|
|
+ {
|
|
|
+ if(avoidroadid[i] == nroadid)
|
|
|
+ {
|
|
|
+ brtn = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return brtn;
|
|
|
+}
|
|
|
|
|
|
void SetPlan(xodrobj xo)
|
|
|
{
|
|
@@ -511,25 +527,39 @@ void SetPlan(xodrobj xo)
|
|
|
}
|
|
|
|
|
|
#ifdef BOAVOID
|
|
|
- if(data->mfLaneWidth<4.0)
|
|
|
- {
|
|
|
- const int nrangeavoid = 600;
|
|
|
- if((i+(nrangeavoid + 10))<nSize)
|
|
|
- {
|
|
|
- double fhdg1 = xPlan[i].hdg;
|
|
|
- double fhdg2 = xPlan[i+nrangeavoid].hdg;
|
|
|
- double fhdg3 = xPlan[i+nrangeavoid + 5].hdg;
|
|
|
- double fhdgdiff1 = fhdg2 - fhdg1;
|
|
|
- double fhdgdiff2 = fhdg3 - fhdg1;
|
|
|
- while(fhdgdiff1<0)fhdgdiff1 = fhdgdiff1 + 2.0*M_PI;
|
|
|
- while(fhdgdiff2<0)fhdgdiff2 = fhdgdiff2 + 2.0*M_PI;
|
|
|
- if(((fhdgdiff1<(M_PI/3.0))||(fhdgdiff1>(5.0*M_PI/6.0)))&&((fhdgdiff2<(M_PI/3.0))||(fhdgdiff2>(5.0*M_PI/6.0))))
|
|
|
- {
|
|
|
- data->roadSum = 2;
|
|
|
- data->roadOri = 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ if(isboringroad(xPlan[i].nRoadID))
|
|
|
+ {
|
|
|
+ const int nrangeavoid = 600;
|
|
|
+ if((i+(nrangeavoid + 10))<nSize)
|
|
|
+ {
|
|
|
+ double fhdg1 = xPlan[i].hdg;
|
|
|
+ bool bavoid = true;
|
|
|
+ int k;
|
|
|
+ for(k=0;k<=10;k++)
|
|
|
+ {
|
|
|
+ double fhdg5 = xPlan[i+nrangeavoid*k/10].hdg;
|
|
|
+ double fhdgdiff1 = fhdg5 - fhdg1;
|
|
|
+ while(fhdgdiff1<0)fhdgdiff1 = fhdgdiff1 + 2.0*M_PI;
|
|
|
+ if((fhdgdiff1>(M_PI/3.0))&&(fhdgdiff1<(5.0*M_PI/3.0)))
|
|
|
+ {
|
|
|
+ bavoid = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if(bavoid)
|
|
|
+ {
|
|
|
+ data->roadSum = 2;
|
|
|
+ data->roadOri = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ int a = 1;
|
|
|
+ a++;
|
|
|
+ }
|
|
|
+ }
|
|
|
#endif
|
|
|
|
|
|
// data->roadSum = 1;
|