61 Eigen::Vector3d bbox_center = obj->center;
63 ct.x = bbox_center[0];
64 ct.y = bbox_center[1];
65 ct.z = bbox_center[2];
66 Eigen::Vector3d bbox_dir = obj->direction.cast<
double>();
68 if (bbox_dir.norm() < std::numeric_limits<float>::epsilon()) {
72 Eigen::Vector3d bbox_ortho_dir =
73 Eigen::Vector3d(-bbox_dir(1), bbox_dir(0), 0.0f);
74 double bbox_length = obj->size[0];
75 double bbox_width = obj->size[1];
76 Eigen::Vector3d bbox_corners[4];
77 bbox_corners[0] = bbox_center + bbox_dir * bbox_length / 2 +
78 bbox_ortho_dir * bbox_width / 2;
79 bbox_corners[1] = bbox_center - bbox_dir * bbox_length / 2 +
80 bbox_ortho_dir * bbox_width / 2;
81 bbox_corners[2] = bbox_center + bbox_dir * bbox_length / 2 -
82 bbox_ortho_dir * bbox_width / 2;
83 bbox_corners[3] = bbox_center - bbox_dir * bbox_length / 2 -
84 bbox_ortho_dir * bbox_width / 2;
85 for (
int i = 0; i < 4; ++i) {
87 corner.x = bbox_corners[i][0];
88 corner.y = bbox_corners[i][1];
89 corner.z = bbox_corners[i][2];
98 const std::vector<ObjectPtr>& objects,
99 std::vector<ObjectPtr>* valid_objects) {
100 if (roi ==
nullptr ||
101 (roi->road_polygons.empty() && roi->junction_polygons.empty())) {
102 valid_objects->assign(objects.begin(), objects.end());
106 valid_objects->clear();
107 valid_objects->reserve(objects.size());
108 for (std::size_t i = 0; i < objects.size(); i++) {
110 valid_objects->push_back(objects[i]);
114 return valid_objects->size() > 0;