Open3D (C++ API)
|
A bounding box oriented along an arbitrary frame of reference. More...
#include <BoundingVolume.h>
Public Member Functions | |
OrientedBoundingBox () | |
Default constructor. More... | |
OrientedBoundingBox (const Eigen::Vector3d ¢er, const Eigen::Matrix3d &R, const Eigen::Vector3d &extent) | |
Parameterized constructor. More... | |
~OrientedBoundingBox () override | |
OrientedBoundingBox & | Clear () override |
Clear all elements in the geometry. More... | |
bool | IsEmpty () const override |
Returns true iff the geometry is empty. More... | |
virtual Eigen::Vector3d | GetMinBound () const override |
Returns min bounds for geometry coordinates. More... | |
virtual Eigen::Vector3d | GetMaxBound () const override |
Returns max bounds for geometry coordinates. More... | |
virtual Eigen::Vector3d | GetCenter () const override |
Returns the center of the geometry coordinates. More... | |
virtual AxisAlignedBoundingBox | GetAxisAlignedBoundingBox () const override |
Returns an axis-aligned bounding box of the geometry. More... | |
virtual OrientedBoundingBox | GetOrientedBoundingBox () const override |
Returns an oriented bounding box of the geometry. More... | |
virtual OrientedBoundingBox & | Transform (const Eigen::Matrix4d &transformation) override |
Apply transformation (4x4 matrix) to the geometry coordinates. More... | |
virtual OrientedBoundingBox & | Translate (const Eigen::Vector3d &translation, bool relative=true) override |
Apply translation to the geometry coordinates. More... | |
virtual OrientedBoundingBox & | Scale (const double scale, const Eigen::Vector3d ¢er) override |
Scales the oriented bounding boxs. The extent parameter is multiplied by the scale factor and the center is set to the given parameter.. More... | |
virtual OrientedBoundingBox & | Rotate (const Eigen::Matrix3d &R, const Eigen::Vector3d ¢er) override |
Rotates the oriented bounding boxs. Sets the rotation and center of the oriented bounding box to the given parameters. More... | |
double | Volume () const |
Returns the volume of the bounding box. More... | |
std::vector< Eigen::Vector3d > | GetBoxPoints () const |
std::vector< size_t > | GetPointIndicesWithinBoundingBox (const std::vector< Eigen::Vector3d > &points) const |
Return indices to points that are within the bounding box. More... | |
Public Member Functions inherited from open3d::geometry::Geometry3D | |
~Geometry3D () override | |
Public Member Functions inherited from open3d::geometry::Geometry | |
virtual | ~Geometry () |
GeometryType | GetGeometryType () const |
Returns one of registered geometry types. More... | |
int | Dimension () const |
Returns whether the geometry is 2D or 3D. More... | |
std::string | GetName () const |
void | SetName (const std::string &name) |
Static Public Member Functions | |
static OrientedBoundingBox | CreateFromAxisAlignedBoundingBox (const AxisAlignedBoundingBox &aabox) |
static OrientedBoundingBox | CreateFromPoints (const std::vector< Eigen::Vector3d > &points) |
Static Public Member Functions inherited from open3d::geometry::Geometry3D | |
static Eigen::Matrix3d | GetRotationMatrixFromXYZ (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from XYZ RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromYZX (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from YZX RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromZXY (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from ZXY RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromXZY (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from XZY RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromZYX (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from ZYX RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromYXZ (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from YXZ RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromAxisAngle (const Eigen::Vector3d &rotation) |
Get Rotation Matrix from AxisAngle RotationType. More... | |
static Eigen::Matrix3d | GetRotationMatrixFromQuaternion (const Eigen::Vector4d &rotation) |
Get Rotation Matrix from Quaternion. More... | |
Data Fields | |
Eigen::Vector3d | center_ |
The center point of the bounding box. More... | |
Eigen::Matrix3d | R_ |
Eigen::Vector3d | extent_ |
The extent of the bounding box in its frame of reference. More... | |
Eigen::Vector3d | color_ |
The color of the bounding box in RGB. More... | |
Additional Inherited Members | |
Public Types inherited from open3d::geometry::Geometry | |
enum | GeometryType { GeometryType::Unspecified = 0, GeometryType::PointCloud = 1, GeometryType::VoxelGrid = 2, GeometryType::Octree = 3, GeometryType::LineSet = 4, GeometryType::MeshBase = 5, GeometryType::TriangleMesh = 6, GeometryType::HalfEdgeTriangleMesh = 7, GeometryType::Image = 8, GeometryType::RGBDImage = 9, GeometryType::TetraMesh = 10, GeometryType::OrientedBoundingBox = 11, GeometryType::AxisAlignedBoundingBox = 12 } |
Specifies possible geometry types. More... | |
Protected Member Functions inherited from open3d::geometry::Geometry3D | |
Geometry3D (GeometryType type) | |
Parameterized Constructor. More... | |
Eigen::Vector3d | ComputeMinBound (const std::vector< Eigen::Vector3d > &points) const |
Compute min bound of a list points. More... | |
Eigen::Vector3d | ComputeMaxBound (const std::vector< Eigen::Vector3d > &points) const |
Compute max bound of a list points. More... | |
Eigen::Vector3d | ComputeCenter (const std::vector< Eigen::Vector3d > &points) const |
Computer center of a list of points. More... | |
void | ResizeAndPaintUniformColor (std::vector< Eigen::Vector3d > &colors, const size_t size, const Eigen::Vector3d &color) const |
Resizes the colors vector and paints a uniform color. More... | |
void | TransformPoints (const Eigen::Matrix4d &transformation, std::vector< Eigen::Vector3d > &points) const |
Transforms all points with the transformation matrix. More... | |
void | TransformNormals (const Eigen::Matrix4d &transformation, std::vector< Eigen::Vector3d > &normals) const |
Transforms the normals with the transformation matrix. More... | |
void | TranslatePoints (const Eigen::Vector3d &translation, std::vector< Eigen::Vector3d > &points, bool relative) const |
Apply translation to the geometry coordinates. More... | |
void | ScalePoints (const double scale, std::vector< Eigen::Vector3d > &points, const Eigen::Vector3d ¢er) const |
Scale the coordinates of all points by the scaling factor scale . More... | |
void | RotatePoints (const Eigen::Matrix3d &R, std::vector< Eigen::Vector3d > &points, const Eigen::Vector3d ¢er) const |
Rotate all points with the rotation matrix R . More... | |
void | RotateNormals (const Eigen::Matrix3d &R, std::vector< Eigen::Vector3d > &normals) const |
Rotate all normals with the rotation matrix R . More... | |
Protected Member Functions inherited from open3d::geometry::Geometry | |
Geometry (GeometryType type, int dimension) | |
Parameterized Constructor. More... | |
A bounding box oriented along an arbitrary frame of reference.
The oriented bounding box is defined by its center position, rotation maxtrix and extent.
|
inline |
Default constructor.
Creates an empty Oriented Bounding Box.
|
inline |
Parameterized constructor.
center | Specifies the center position of the bounding box. |
R | The rotation matrix specifying the orientation of the bounding box with the original frame of reference. |
extent | The extent of the bounding box. |
|
inlineoverride |
|
overridevirtual |
Clear all elements in the geometry.
Implements open3d::geometry::Geometry3D.
|
static |
Returns an oriented bounding box from the AxisAlignedBoundingBox.
aabox | AxisAlignedBoundingBox object from which OrientedBoundingBox is created. |
|
static |
Creates an oriented bounding box using a PCA. Note, that this is only an approximation to the minimum oriented bounding box that could be computed for example with O'Rourke's algorithm (cf. http://cs.smith.edu/~jorourke/Papers/MinVolBox.pdf, https://www.geometrictools.com/Documentation/MinimumVolumeBox.pdf)
|
overridevirtual |
Returns an axis-aligned bounding box of the geometry.
Implements open3d::geometry::Geometry3D.
std::vector< Eigen::Vector3d > open3d::geometry::OrientedBoundingBox::GetBoxPoints | ( | ) | const |
Returns the eight points that define the bounding box.
------- x /|
/ | / | z y 0 ----------------— 1 /| /| / | / | / | / | / | / | 2 ----------------— 7 | | |____________|____| 6 | /3 | / | / | / | / | / |/ |/ 5 ----------------— 4
|
overridevirtual |
Returns the center of the geometry coordinates.
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Returns max bounds for geometry coordinates.
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Returns min bounds for geometry coordinates.
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Returns an oriented bounding box of the geometry.
Implements open3d::geometry::Geometry3D.
std::vector< size_t > open3d::geometry::OrientedBoundingBox::GetPointIndicesWithinBoundingBox | ( | const std::vector< Eigen::Vector3d > & | points | ) | const |
Return indices to points that are within the bounding box.
|
overridevirtual |
Returns true
iff the geometry is empty.
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Rotates the oriented bounding boxs. Sets the rotation and center of the oriented bounding box to the given parameters.
R | New rotation matrix of the oriented bounding box. |
center | New center of the oriented bounding box. |
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Scales the oriented bounding boxs. The extent parameter is multiplied by the scale factor and the center is set to the given parameter..
scale | The scale parameter that is multiplied to the extent parameter of the oriented bounding box. |
center | New center of the oriented bounding box. |
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Apply transformation (4x4 matrix) to the geometry coordinates.
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Apply translation to the geometry coordinates.
translation | A 3D vector to transform the geometry. |
relative | If true , the translation is directly applied to the geometry. Otherwise, the geometry center is moved to the translation . |
Implements open3d::geometry::Geometry3D.
double open3d::geometry::OrientedBoundingBox::Volume | ( | ) | const |
Returns the volume of the bounding box.
Eigen::Vector3d open3d::geometry::OrientedBoundingBox::center_ |
The center point of the bounding box.
Eigen::Vector3d open3d::geometry::OrientedBoundingBox::color_ |
The color of the bounding box in RGB.
Eigen::Vector3d open3d::geometry::OrientedBoundingBox::extent_ |
The extent of the bounding box in its frame of reference.
Eigen::Matrix3d open3d::geometry::OrientedBoundingBox::R_ |
The rotation matrix of the bounding box to transform the original frame of reference to the frame of this box.