|
@@ -15,11 +15,17 @@ std::vector<iv::RoadDigitUnit> * RoadDigit::GetRDU()
|
|
return &mvectorRDU;
|
|
return &mvectorRDU;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+std::vector<iv::ParkingPoint> * RoadDigit::GetParkingPoint()
|
|
|
|
+{
|
|
|
|
+ return &mvectorParkingPoint;
|
|
|
|
+}
|
|
|
|
+
|
|
void RoadDigit::UpdateSpace(double fspace)
|
|
void RoadDigit::UpdateSpace(double fspace)
|
|
{
|
|
{
|
|
if(mpRoad == 0)return;
|
|
if(mpRoad == 0)return;
|
|
CalcLine(fspace);
|
|
CalcLine(fspace);
|
|
CalcLane();
|
|
CalcLane();
|
|
|
|
+ CalcParkingPoint();
|
|
}
|
|
}
|
|
|
|
|
|
int RoadDigit::GetSectionIndex(Road *pRoad, double s)
|
|
int RoadDigit::GetSectionIndex(Road *pRoad, double s)
|
|
@@ -368,4 +374,50 @@ void RoadDigit::CalcLane()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void RoadDigit::CalcParkingPoint()
|
|
|
|
+{
|
|
|
|
+ unsigned int lObjectSize = mpRoad->GetObjectCount();
|
|
|
|
+ unsigned int i;
|
|
|
|
+ for(i=0;i<lObjectSize;i++)
|
|
|
|
+ {
|
|
|
|
+ Object * pObject = mpRoad->GetObject(i);
|
|
|
|
+ if(pObject->Gettype() == "parkingSpace")
|
|
|
|
+ {
|
|
|
|
+ double s = pObject->Gets();
|
|
|
|
+ double t = pObject->Gett();
|
|
|
|
+ double length,width,hdg;
|
|
|
|
+ if((pObject->Getwidth(width) == 1)&&(pObject->Getlength(length)==1)&&(pObject->Gethdg(hdg)== 1))
|
|
|
|
+ {
|
|
|
|
+ double roadx,roady,roadhdg;
|
|
|
|
+ mpRoad->GetGeometryCoords(s,roadx,roady,roadhdg);
|
|
|
|
+ double centerx,centery;
|
|
|
|
+ centerx = roadx + t*cos(roadhdg + M_PI/2.0);
|
|
|
|
+ centery = roady + t*sin(roadhdg + M_PI/2.0);
|
|
|
|
+ double hdgpark = hdg + roadhdg;
|
|
|
|
+ double x1,x2,x3,x4,y1,y2,y3,y4;
|
|
|
|
+ double xtem,ytem;
|
|
|
|
+ xtem = centerx + 0.5*width * cos(hdgpark);
|
|
|
|
+ ytem = centery + 0.5*width * sin(hdgpark);
|
|
|
|
+ x1 = xtem + 0.5*length * cos(hdgpark + M_PI/2.0);
|
|
|
|
+ y1 = ytem + 0.5*length * sin(hdgpark + M_PI/2.0);
|
|
|
|
+ x4 = xtem + 0.5*length * cos(hdgpark - M_PI/2.0);
|
|
|
|
+ y4 = ytem + 0.5*length * sin(hdgpark - M_PI/2.0);
|
|
|
|
+ xtem = centerx + 0.5*width * cos(hdgpark+M_PI);
|
|
|
|
+ ytem = centery + 0.5*width * sin(hdgpark+M_PI);
|
|
|
|
+ x2 = xtem + 0.5*length * cos(hdgpark + M_PI/2.0);
|
|
|
|
+ y2 = ytem + 0.5*length * sin(hdgpark + M_PI/2.0);
|
|
|
|
+ x3 = xtem + 0.5*length * cos(hdgpark - M_PI/2.0);
|
|
|
|
+ y3 = ytem + 0.5*length * sin(hdgpark - M_PI/2.0);
|
|
|
|
+ iv::ParkingXY xP;
|
|
|
|
+ iv::ParkingPoint xPP;
|
|
|
|
+ xP.mX = x1;xP.mY = y1;xPP.mParkingXY.push_back(xP);
|
|
|
|
+ xP.mX = x2;xP.mY = y2;xPP.mParkingXY.push_back(xP);
|
|
|
|
+ xP.mX = x3;xP.mY = y3;xPP.mParkingXY.push_back(xP);
|
|
|
|
+ xP.mX = x4;xP.mY = y4;xPP.mParkingXY.push_back(xP);
|
|
|
|
+ mvectorParkingPoint.push_back(xPP);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
|