Open3D (C++ API)
0.17.0
|
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 |
virtual OrientedBoundingBox | GetOrientedBoundingBox (bool robust) const override |
Returns the object itself. More... | |
virtual OrientedBoundingBox | GetMinimalOrientedBoundingBox (bool robust) const override |
Returns the object itself. 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 |
Apply scaling to the geometry coordinates. Given a scaling factor \(s\), and center \(c\), a given point \(p\) is transformed according to \(s (p - c) + c\). More... | |
virtual OrientedBoundingBox & | Rotate (const Eigen::Matrix3d &R, const Eigen::Vector3d ¢er) override |
Apply rotation to the geometry coordinates and normals. Given a rotation matrix \(R\), and center \(c\), a given point \(p\) is transformed according to \(R (p - c) + c\). 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 | |
virtual Geometry3D & | Rotate (const Eigen::Matrix3d &R) |
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, bool robust=false) |
static OrientedBoundingBox | CreateFromPointsMinimal (const std::vector< Eigen::Vector3d > &points, bool robust=false) |
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 class | GeometryType { Unspecified = 0 , PointCloud = 1 , VoxelGrid = 2 , Octree = 3 , LineSet = 4 , MeshBase = 5 , TriangleMesh = 6 , HalfEdgeTriangleMesh = 7 , Image = 8 , RGBDImage = 9 , TetraMesh = 10 , OrientedBoundingBox = 11 , 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 | TransformCovariances (const Eigen::Matrix4d &transformation, std::vector< Eigen::Matrix3d > &covariances) const |
Transforms all covariance matrices with the transformation. 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... | |
void | RotateCovariances (const Eigen::Matrix3d &R, std::vector< Eigen::Matrix3d > &covariances) const |
Rotate all covariance matrices 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)
points | The input points |
robust | If set to true uses a more robust method which works in degenerate cases but introduces noise to the points coordinates. |
|
static |
Creates the oriented bounding box with the smallest volume. The algorithm makes use of the fact that at least one edge of the convex hull must be collinear with an edge of the minimum bounding box: for each triangle in the convex hull, calculate the minimal axis aligned box in the frame of that triangle. at the end, return the box with the smallest volume
points | The input points |
robust | If set to true uses a more robust method which works in degenerate cases but introduces noise to the points coordinates. |
|
overridevirtual |
Creates an axis-aligned bounding box around the points (corners) of the object.
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 the object itself.
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Returns the object itself.
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 |
Apply rotation to the geometry coordinates and normals. Given a rotation matrix \(R\), and center \(c\), a given point \(p\) is transformed according to \(R (p - c) + c\).
R | A 3x3 rotation matrix |
center | Rotation center that is used for the rotation. |
Implements open3d::geometry::Geometry3D.
|
overridevirtual |
Apply scaling to the geometry coordinates. Given a scaling factor \(s\), and center \(c\), a given point \(p\) is transformed according to \(s (p - c) + c\).
scale | The scale parameter that is multiplied to the points/vertices of the geometry. |
center | Scale center that is used to resize the geometry. |
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.