roaddigit.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef ROADDIGIT_H
  2. #define ROADDIGIT_H
  3. #include "OpenDrive/OpenDrive.h"
  4. #include <vector>
  5. #include "xodrfunc.h"
  6. namespace iv {
  7. struct lanexy
  8. {
  9. int nLane;
  10. double mX;
  11. double mY;
  12. double mCenterX;
  13. double mCenterY;
  14. int mType = 0;
  15. int mnMarkColor;
  16. int mMarkType = -1; //if -1 no mark
  17. int mnChange = 0;
  18. std::vector<int> mvectorsignal;
  19. };
  20. struct RoadDigitUnit
  21. {
  22. double mS;
  23. double mX;
  24. double mY;
  25. double mfHdg;
  26. std::vector<iv::LanePoint> mvectorLanePoint;
  27. };
  28. struct ParkingXY
  29. {
  30. double mX;
  31. double mY;
  32. };
  33. struct ParkingPoint
  34. {
  35. vector<ParkingXY> mParkingXY;
  36. vector<vector<ParkingXY>> mParkingMark;
  37. string strtext;
  38. ParkingXY mParkingCenterXY;
  39. double mfHdg;
  40. };
  41. }
  42. class RoadDigit
  43. {
  44. public:
  45. RoadDigit(Road * pRoad,double fspace);
  46. private:
  47. std::vector<iv::RoadDigitUnit> mvectorRDU;
  48. Road * mpRoad = 0;
  49. std::vector<iv::ParkingPoint> mvectorParkingPoint;
  50. private:
  51. void CalcLine(double fspace);
  52. void CalcLane();
  53. void CalcParkingPoint();
  54. public:
  55. std::vector<iv::RoadDigitUnit> * GetRDU();
  56. void UpdateSpace(double fspace);
  57. std::vector<iv::ParkingPoint> * GetParkingPoint();
  58. private:
  59. int GetSectionIndex(Road * pRoad,double s);
  60. };
  61. #endif // ROADDIGIT_H