| 2624 | } |
| 2625 | |
| 2626 | void ODRoad::getObjects(std::vector<Object>& objs) const { |
| 2627 | auto getP = [&](double s, double t, ODXYZ& P, double& T) { |
| 2628 | double x = 0, y = 0, z = 0, dx = 0, dy = 0; |
| 2629 | roadGeom(s, x, y); |
| 2630 | roadNormal(s, dx, dy); |
| 2631 | T = getHeading(s); |
| 2632 | P.z = getEle(s); |
| 2633 | P.x = x + t * dx; |
| 2634 | P.y = y + t * dy; |
| 2635 | }; |
| 2636 | objs.clear(); |
| 2637 | for (const auto& obj_ptr : objects) { |
| 2638 | Object obj; |
| 2639 | obj.st = Object::OBJECT; |
| 2640 | { |
| 2641 | ODXYZ P; |
| 2642 | double T = 0; |
| 2643 | getP(obj_ptr->getS(), obj_ptr->getT(), P, T); |
| 2644 | P.z += obj_ptr->getZoffset(); |
| 2645 | obj.x = P.x; |
| 2646 | obj.y = P.y; |
| 2647 | obj.z = P.z; |
| 2648 | } |
| 2649 | obj.id = obj_ptr->getId(); |
| 2650 | obj.s = obj_ptr->getS(); |
| 2651 | obj.t = obj_ptr->getT(); |
| 2652 | obj.len = obj_ptr->getLength(); |
| 2653 | obj.wid = obj_ptr->getWidth(); |
| 2654 | obj.hei = obj_ptr->getHeight(); |
| 2655 | obj.pitch = obj_ptr->getPitch(); |
| 2656 | obj.roll = obj_ptr->getRoll(); |
| 2657 | obj.yaw = obj_ptr->getHdg() + getHeading(obj_ptr->getS()); |
| 2658 | obj.hdg = obj_ptr->getHdg(); |
| 2659 | obj.name = obj_ptr->getName2(); |
| 2660 | obj.type = obj_ptr->getType(); |
| 2661 | obj.subtype = obj_ptr->getSubType(); |
| 2662 | obj.zoffset = obj_ptr->getZoffset(); |
| 2663 | |
| 2664 | obj_ptr->getGeom(obj.geom, getP); |
| 2665 | obj_ptr->getRepeat(obj.repeat, getP); |
| 2666 | |
| 2667 | // obj_ptr->getBoundary(obj.boundary, getP); |
| 2668 | if (obj_ptr->getRepeatData().size() > 0) { |
| 2669 | ODRepeatPtr tmp = obj_ptr->getRepeatData().front(); |
| 2670 | obj.repetaData = ""; |
| 2671 | obj.repetaData += ("s:" + std::to_string(tmp->s) + ";"); |
| 2672 | obj.repetaData += ("length:" + std::to_string(tmp->length) + ";"); |
| 2673 | obj.repetaData += ("distance:" + std::to_string(tmp->distance) + ";"); |
| 2674 | obj.repetaData += ("tStart:" + std::to_string(tmp->tStart) + ";"); |
| 2675 | obj.repetaData += ("tEnd:" + std::to_string(tmp->tEnd) + ";"); |
| 2676 | obj.repetaData += ("widthStart:" + std::to_string(tmp->widthStart) + ";"); |
| 2677 | obj.repetaData += ("widthEnd:" + std::to_string(tmp->widthEnd) + ";"); |
| 2678 | obj.repetaData += ("heightStart:" + std::to_string(tmp->heightStart) + ";"); |
| 2679 | obj.repetaData += ("heightEnd:" + std::to_string(tmp->heightEnd) + ";"); |
| 2680 | obj.repetaData += ("zOffsetStart:" + std::to_string(tmp->zOffsetStart) + ";"); |
| 2681 | obj.repetaData += ("zOffsetEnd:" + std::to_string(tmp->zOffsetEnd) + ";"); |
| 2682 | obj.repetaData += ("lengthStart:" + std::to_string(tmp->lengthStart) + ";"); |
| 2683 | obj.repetaData += ("lengthEnd:" + std::to_string(tmp->lengthEnd) + ";"); |
no test coverage detected