5#include "geometry/bbox3d.h"
6#include "common/eigen_utility.h"
16 bbox3d::bbox3d() : min_(std::numeric_limits<double>::infinity(), std::numeric_limits<double>::infinity(), std::numeric_limits<double>::infinity()),
17 max_(-std::numeric_limits<double>::infinity(), -std::numeric_limits<double>::infinity(), -std::numeric_limits<double>::infinity()){}
32 return min_ == rhs.min_ and max_ == rhs.max_;
40 return min_ + size() / 2.0;
50 p[0] >= min_[0] and p[0] <= max_[0] and
51 p[1] >= min_[1] and p[1] <= max_[1] and
52 p[2] >= min_[2] and p[2] <= max_[2];
61 return {min_.cwiseMin(other.min_), max_.cwiseMax(other.max_)};
64 const point3d &bbox3d::max()
const {
68 const point3d &bbox3d::min()
const {
88 vertices.row(0) = -v1 - v2 - v3;
89 vertices.row(1) = -v1;
91 vertices.row(3) = -v2;
93 vertices.row(5) = -v3;
95 vertices.row(7) = v1 + v2 + v3;
97 auto min = c + vertices.colwise().minCoeff();
98 auto max = c + vertices.colwise().maxCoeff();
103 bbox3d bbox3d::union_hull(
const bbox3d &other)
const {
105 min().cwiseMin(other.min()),
106 max().cwiseMax(other.max())
bool contains(const point3d &p) const
bool operator==(const bbox3d &rhs) const
重载了==运算符,用于判断两个bbox3d是否相等
bbox3d convex_hull(const bbox3d &other) const
point3d center() const
返回包围盒的中心点
Eigen::Matrix< double, Eigen::Dynamic, 3, Eigen::RowMajor > vectors3d
3维向量的集合
point3d transform_point(const linear_transformation3d &lhs, const point3d &p)
对一个三维点进行线性变换
vector3d transform_vector(const linear_transformation3d &lhs, const vector3d &v)
对一个三维向量进行线性变换
Eigen::Matrix< double, 3, 3, Eigen::RowMajor > linear_transformation3d
线性变换矩阵
Eigen::RowVector3d vector3d
3维向量
本系统的主命名空间,包含了common, examples, fmm, geometry, numeric, point_cloud等子命名空间