MCPcopy Create free account
hub / github.com/Tencent/TAD_Sim / roadEleControlPoint

Method roadEleControlPoint

common/map_sdk/map_import/src/OpenDriveStruct.cpp:2283–2324  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2281}
2282
2283void ODRoad::roadEleControlPoint(std::vector<std::vector<double>>& ele, double length, std::string mapversion) {
2284 ele.clear();
2285 double _a = 0;
2286 double _b = 0;
2287 double _c = 0;
2288 double _d = 0;
2289 double _s = 0;
2290 int index = 0;
2291 for (auto it : elevation) {
2292 it.getParam(_a, _b, _c, _d, _s);
2293 double elelength = 0;
2294 if (index == elevation.size() - 1) {
2295 elelength = length - it.offset();
2296 } else {
2297 elelength = elevation.at(index + 1).offset() - _s;
2298 }
2299 if ((std::abs(_c) < 1e-6 && std::abs(_d) < 1e-6) || mapversion == "tadsim v2.0") {
2300 std::vector<double> tmp;
2301 tmp.push_back(_s);
2302 tmp.push_back(it.value(0));
2303 tmp.push_back(it.slope(0));
2304 ele.push_back(tmp);
2305 } else {
2306 for (int i = 0; i < 4; i++) {
2307 double percent = static_cast<double>(i) / 5.0 * elelength;
2308 std::vector<double> tmp;
2309 tmp.push_back(percent + _s);
2310 tmp.push_back(it.value(percent));
2311 tmp.push_back(it.slope(percent));
2312 ele.push_back(tmp);
2313 }
2314 }
2315 if (index == elevation.size() - 1) {
2316 std::vector<double> tmp;
2317 tmp.push_back(length);
2318 tmp.push_back(it.value(elelength));
2319 tmp.push_back(it.slope(elelength));
2320 ele.push_back(tmp);
2321 }
2322 index++;
2323 }
2324}
2325
2326void ODRoad::roadSlope(std::vector<double>& startx, std::vector<double>& length, std::vector<double>& slope) {
2327 for (size_t i = 0; i < elevation.size(); i++) {

Callers 2

DoRoadMethod · 0.80
DoLinkMethod · 0.80

Calls 8

absFunction · 0.85
getParamMethod · 0.80
slopeMethod · 0.80
clearMethod · 0.45
sizeMethod · 0.45
offsetMethod · 0.45
push_backMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected