Open3D (C++ API)
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Data Structures | Public Member Functions | Static Public Member Functions | Data Fields | Protected Member Functions
open3d::geometry::HalfEdgeTriangleMesh Class Reference

#include <HalfEdgeTriangleMesh.h>

Inheritance diagram for open3d::geometry::HalfEdgeTriangleMesh:
open3d::geometry::MeshBase open3d::geometry::Geometry3D open3d::geometry::Geometry

Data Structures

class  HalfEdge
 

Public Member Functions

 HalfEdgeTriangleMesh ()
 
virtual HalfEdgeTriangleMeshClear () override
 Clear all elements in the geometry. More...
 
bool HasHalfEdges () const
 True if half-edges have already been computed. More...
 
std::vector< int > BoundaryHalfEdgesFromVertex (int vertex_index) const
 
std::vector< int > BoundaryVerticesFromVertex (int vertex_index) const
 
std::vector< std::vector< int > > GetBoundaries () const
 Returns a vector of boundaries. A boundary is a vector of vertices. More...
 
HalfEdgeTriangleMeshoperator+= (const HalfEdgeTriangleMesh &mesh)
 
HalfEdgeTriangleMesh operator+ (const HalfEdgeTriangleMesh &mesh) const
 
- Public Member Functions inherited from open3d::geometry::MeshBase
 MeshBase ()
 
 ~MeshBase () override
 
virtual 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 MeshBaseTransform (const Eigen::Matrix4d &transformation) override
 Apply transformation (4x4 matrix) to the geometry coordinates. More...
 
virtual MeshBaseTranslate (const Eigen::Vector3d &translation, bool relative=true) override
 Apply translation to the geometry coordinates. More...
 
virtual MeshBaseScale (const double scale, bool center=true) override
 Apply scaling to the geometry coordinates. More...
 
virtual MeshBaseRotate (const Eigen::Matrix3d &R, bool center=true) override
 Apply rotation to the geometry coordinates and normals. More...
 
MeshBaseoperator+= (const MeshBase &mesh)
 
MeshBase operator+ (const MeshBase &mesh) const
 
bool HasVertices () const
 
bool HasVertexNormals () const
 
bool HasVertexColors () const
 
MeshBaseNormalizeNormals ()
 
MeshBasePaintUniformColor (const Eigen::Vector3d &color)
 Assigns each vertex in the TriangleMesh the same color. More...
 
std::tuple< std::shared_ptr< TriangleMesh >, std::vector< size_t > > ComputeConvexHull () const
 Function that computes the convex hull of the triangle mesh using qhull. 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...
 

Static Public Member Functions

static std::shared_ptr< HalfEdgeTriangleMeshCreateFromTriangleMesh (const TriangleMesh &mesh)
 
- 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

std::vector< Eigen::Vector3i > triangles_
 
std::vector< Eigen::Vector3d > triangle_normals_
 
std::vector< HalfEdgehalf_edges_
 
std::vector< std::vector< int > > ordered_half_edge_from_vertex_
 
- Data Fields inherited from open3d::geometry::MeshBase
std::vector< Eigen::Vector3d > vertices_
 
std::vector< Eigen::Vector3d > vertex_normals_
 
std::vector< Eigen::Vector3d > vertex_colors_
 

Protected Member Functions

 HalfEdgeTriangleMesh (Geometry::GeometryType type)
 
int NextHalfEdgeFromVertex (int init_half_edge_index) const
 
int NextHalfEdgeOnBoundary (int curr_half_edge_index) const
 
- Protected Member Functions inherited from open3d::geometry::MeshBase
 MeshBase (Geometry::GeometryType type)
 
 MeshBase (Geometry::GeometryType type, const std::vector< Eigen::Vector3d > &vertices)
 
- 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, bool center) const
 Scale the coordinates of all points by the scaling factor scale. More...
 
void RotatePoints (const Eigen::Matrix3d &R, std::vector< Eigen::Vector3d > &points, bool center) const
 Rotate all points with the rotation matrix R. More...
 
void RotateNormals (const Eigen::Matrix3d &R, std::vector< Eigen::Vector3d > &normals, bool center) 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...
 

Additional Inherited Members

- Public Types inherited from open3d::geometry::MeshBase
enum  SimplificationContraction { SimplificationContraction::Average, SimplificationContraction::Quadric }
 
enum  FilterScope { FilterScope::All, FilterScope::Color, FilterScope::Normal, FilterScope::Vertex }
 
- 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...
 

Constructor & Destructor Documentation

◆ HalfEdgeTriangleMesh() [1/2]

open3d::geometry::HalfEdgeTriangleMesh::HalfEdgeTriangleMesh ( )
inline

◆ HalfEdgeTriangleMesh() [2/2]

open3d::geometry::HalfEdgeTriangleMesh::HalfEdgeTriangleMesh ( Geometry::GeometryType  type)
inlineprotected

Member Function Documentation

◆ BoundaryHalfEdgesFromVertex()

std::vector< int > open3d::geometry::HalfEdgeTriangleMesh::BoundaryHalfEdgesFromVertex ( int  vertex_index) const

Query manifold boundary half edges from a starting vertex If query vertex is not on boundary, empty vector will be returned

◆ BoundaryVerticesFromVertex()

std::vector< int > open3d::geometry::HalfEdgeTriangleMesh::BoundaryVerticesFromVertex ( int  vertex_index) const

Query manifold boundary vertices from a starting vertex If query vertex is not on boundary, empty vector will be returned

◆ Clear()

HalfEdgeTriangleMesh & open3d::geometry::HalfEdgeTriangleMesh::Clear ( )
overridevirtual

Clear all elements in the geometry.

Reimplemented from open3d::geometry::MeshBase.

◆ CreateFromTriangleMesh()

std::shared_ptr< HalfEdgeTriangleMesh > open3d::geometry::HalfEdgeTriangleMesh::CreateFromTriangleMesh ( const TriangleMesh mesh)
static

◆ GetBoundaries()

std::vector< std::vector< int > > open3d::geometry::HalfEdgeTriangleMesh::GetBoundaries ( ) const

Returns a vector of boundaries. A boundary is a vector of vertices.

◆ HasHalfEdges()

bool open3d::geometry::HalfEdgeTriangleMesh::HasHalfEdges ( ) const

True if half-edges have already been computed.

◆ NextHalfEdgeFromVertex()

int open3d::geometry::HalfEdgeTriangleMesh::NextHalfEdgeFromVertex ( int  init_half_edge_index) const
protected

Returns the next half edge from starting vertex of the input half edge, in a counterclock wise manner. Returns -1 if when hitting a boundary. This is done by traversing to the next, next and twin half edge.

◆ NextHalfEdgeOnBoundary()

int open3d::geometry::HalfEdgeTriangleMesh::NextHalfEdgeOnBoundary ( int  curr_half_edge_index) const
protected

◆ operator+()

HalfEdgeTriangleMesh open3d::geometry::HalfEdgeTriangleMesh::operator+ ( const HalfEdgeTriangleMesh mesh) const

◆ operator+=()

HalfEdgeTriangleMesh & open3d::geometry::HalfEdgeTriangleMesh::operator+= ( const HalfEdgeTriangleMesh mesh)

Field Documentation

◆ half_edges_

std::vector<HalfEdge> open3d::geometry::HalfEdgeTriangleMesh::half_edges_

◆ ordered_half_edge_from_vertex_

std::vector<std::vector<int> > open3d::geometry::HalfEdgeTriangleMesh::ordered_half_edge_from_vertex_

Counter-clockwise ordered half-edges started from each vertex If the vertex is on boundary, the starting edge must be on boundary too

◆ triangle_normals_

std::vector<Eigen::Vector3d> open3d::geometry::HalfEdgeTriangleMesh::triangle_normals_

◆ triangles_

std::vector<Eigen::Vector3i> open3d::geometry::HalfEdgeTriangleMesh::triangles_

The documentation for this class was generated from the following files: