1 #ifndef CPP_COLLISION_INCLUDE_COLLISION_NARROWPHASE_UTILS_H_ 2 #define CPP_COLLISION_INCLUDE_COLLISION_NARROWPHASE_UTILS_H_ 12 Eigen::Matrix2d local_axes;
14 Eigen::Vector2d v = pt2 - pt1;
16 Eigen::Vector2d center = (pt1 + pt2) / 2;
18 double length = v.norm();
20 if (length < 1e-10)
return 0;
24 local_axes.col(0) = v;
25 local_axes.col(1) = Eigen::Vector2d(-v(1), v(0));
26 return std::make_shared<const RectangleOBB>(length / 2, rect_width / 2,
33 for (
auto vert = verts.begin(); vert < verts.end() - 1; vert++) {
36 if (rect_new) sg_rects_ptr->
addToGroup(rect_new);
38 if (verts.size() > 1) {
42 if (rect_new) sg_rects_ptr->
addToGroup(rect_new);
RectangleOBBConstPtr create_obb_from_points(Eigen::Vector2d pt1, Eigen::Vector2d pt2, double rect_width)
ShapeGroup can contain simple shapes.
std::shared_ptr< const RectangleOBB > RectangleOBBConstPtr
int generate_rectangles_from_vertex_list(std::vector< Eigen::Vector2d > &verts, collision::ShapeGroup *sg_rects_ptr, double rect_width)
void addToGroup(ShapeConstPtr shape)
Adds a simple shape to the ShapeGroup.