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::Geometry3D open3d::geometry::Geometry

Data Structures

class  HalfEdge
 

Public Member Functions

 HalfEdgeTriangleMesh ()
 
HalfEdgeTriangleMeshClear () override
 Clear all data in HalfEdgeTriangleMesh. More...
 
bool IsEmpty () const override
 
Eigen::Vector3d GetMinBound () const override
 
Eigen::Vector3d GetMaxBound () const override
 
Eigen::Vector3d GetCenter () const override
 
AxisAlignedBoundingBox GetAxisAlignedBoundingBox () const override
 
OrientedBoundingBox GetOrientedBoundingBox () const override
 
HalfEdgeTriangleMeshTransform (const Eigen::Matrix4d &transformation) override
 
HalfEdgeTriangleMeshTranslate (const Eigen::Vector3d &translation, bool relative=true) override
 
HalfEdgeTriangleMeshScale (const double scale, bool center=true) override
 
HalfEdgeTriangleMeshRotate (const Eigen::Vector3d &rotation, bool center=true, RotationType type=RotationType::XYZ) override
 
bool ComputeHalfEdges ()
 
bool HasVertices () const
 
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...
 
HalfEdgeTriangleMeshRemoveDuplicatedVertices ()
 
HalfEdgeTriangleMeshRemoveDuplicatedTriangles ()
 
HalfEdgeTriangleMeshRemoveUnreferencedVertices ()
 
HalfEdgeTriangleMeshRemoveDegenerateTriangles ()
 
HalfEdgeTriangleMeshoperator+= (const HalfEdgeTriangleMesh &mesh)
 
HalfEdgeTriangleMesh operator+ (const HalfEdgeTriangleMesh &mesh) const
 
- Public Member Functions inherited from open3d::geometry::Geometry3D
 ~Geometry3D () override
 
- Public Member Functions inherited from open3d::geometry::Geometry
virtual ~Geometry ()
 
GeometryType GetGeometryType () const
 
int Dimension () const
 

Static Public Member Functions

static std::shared_ptr< HalfEdgeTriangleMeshCreateFromMesh (const TriangleMesh &mesh)
 

Data Fields

std::vector< Eigen::Vector3d > vertices_
 
std::vector< Eigen::Vector3d > vertex_normals_
 
std::vector< Eigen::Vector3d > vertex_colors_
 
std::vector< Eigen::Vector3i > triangles_
 
std::vector< Eigen::Vector3d > triangle_normals_
 
std::vector< std::unordered_set< int > > adjacency_list_
 
std::vector< HalfEdgehalf_edges_
 
std::vector< std::vector< int > > ordered_half_edge_from_vertex_
 

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::Geometry3D
 Geometry3D (GeometryType type)
 
Eigen::Vector3d ComputeMinBound (const std::vector< Eigen::Vector3d > &points) const
 
Eigen::Vector3d ComputeMaxBound (const std::vector< Eigen::Vector3d > &points) const
 
Eigen::Vector3d ComputeCenter (const std::vector< Eigen::Vector3d > &points) const
 
void ResizeAndPaintUniformColor (std::vector< Eigen::Vector3d > &colors, const size_t size, const Eigen::Vector3d &color) const
 
void TransformPoints (const Eigen::Matrix4d &transformation, std::vector< Eigen::Vector3d > &points) const
 
void TransformNormals (const Eigen::Matrix4d &transformation, std::vector< Eigen::Vector3d > &normals) const
 
void TranslatePoints (const Eigen::Vector3d &translation, std::vector< Eigen::Vector3d > &points, bool relative) const
 
void ScalePoints (const double scale, std::vector< Eigen::Vector3d > &points, bool center) const
 
void RotatePoints (const Eigen::Vector3d &rotation, std::vector< Eigen::Vector3d > &points, bool center, RotationType type) const
 
void RotateNormals (const Eigen::Vector3d &rotation, std::vector< Eigen::Vector3d > &normals, bool center, RotationType type) const
 
Eigen::Matrix3d GetRotationMatrix (const Eigen::Vector3d &rotation, RotationType type=RotationType::XYZ) const
 
- Protected Member Functions inherited from open3d::geometry::Geometry
 Geometry (GeometryType type, int dimension)
 

Additional Inherited Members

- Public Types inherited from open3d::geometry::Geometry3D
enum  RotationType {
  RotationType::XYZ, RotationType::YZX, RotationType::ZXY, RotationType::XZY,
  RotationType::ZYX, RotationType::YXZ, RotationType::AxisAngle
}
 
- 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::TriangleMesh = 5, GeometryType::HalfEdgeTriangleMesh = 6, GeometryType::Image = 7,
  GeometryType::RGBDImage = 8, GeometryType::TetraMesh = 9, GeometryType::OrientedBoundingBox = 10, GeometryType::AxisAlignedBoundingBox = 11
}
 

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 data in HalfEdgeTriangleMesh.

Implements open3d::geometry::Geometry3D.

◆ ComputeHalfEdges()

bool open3d::geometry::HalfEdgeTriangleMesh::ComputeHalfEdges ( )

Compute and update half edges, half edge can only be computed if the mesh is a manifold. Returns true if half edges are computed.

◆ CreateFromMesh()

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

◆ GetAxisAlignedBoundingBox()

AxisAlignedBoundingBox open3d::geometry::HalfEdgeTriangleMesh::GetAxisAlignedBoundingBox ( ) const
overridevirtual

◆ GetBoundaries()

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

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

◆ GetCenter()

Eigen::Vector3d open3d::geometry::HalfEdgeTriangleMesh::GetCenter ( ) const
overridevirtual

◆ GetMaxBound()

Eigen::Vector3d open3d::geometry::HalfEdgeTriangleMesh::GetMaxBound ( ) const
overridevirtual

◆ GetMinBound()

Eigen::Vector3d open3d::geometry::HalfEdgeTriangleMesh::GetMinBound ( ) const
overridevirtual

◆ GetOrientedBoundingBox()

OrientedBoundingBox open3d::geometry::HalfEdgeTriangleMesh::GetOrientedBoundingBox ( ) const
overridevirtual

◆ HasHalfEdges()

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

True if half-edges have already been computed.

◆ HasVertices()

bool open3d::geometry::HalfEdgeTriangleMesh::HasVertices ( ) const
inline

◆ IsEmpty()

bool open3d::geometry::HalfEdgeTriangleMesh::IsEmpty ( ) const
overridevirtual

◆ 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)

◆ RemoveDegenerateTriangles()

HalfEdgeTriangleMesh & open3d::geometry::HalfEdgeTriangleMesh::RemoveDegenerateTriangles ( )

◆ RemoveDuplicatedTriangles()

HalfEdgeTriangleMesh & open3d::geometry::HalfEdgeTriangleMesh::RemoveDuplicatedTriangles ( )

◆ RemoveDuplicatedVertices()

HalfEdgeTriangleMesh & open3d::geometry::HalfEdgeTriangleMesh::RemoveDuplicatedVertices ( )

◆ RemoveUnreferencedVertices()

HalfEdgeTriangleMesh & open3d::geometry::HalfEdgeTriangleMesh::RemoveUnreferencedVertices ( )

◆ Rotate()

HalfEdgeTriangleMesh & open3d::geometry::HalfEdgeTriangleMesh::Rotate ( const Eigen::Vector3d &  rotation,
bool  center = true,
RotationType  type = RotationType::XYZ 
)
overridevirtual

◆ Scale()

HalfEdgeTriangleMesh & open3d::geometry::HalfEdgeTriangleMesh::Scale ( const double  scale,
bool  center = true 
)
overridevirtual

◆ Transform()

HalfEdgeTriangleMesh & open3d::geometry::HalfEdgeTriangleMesh::Transform ( const Eigen::Matrix4d &  transformation)
overridevirtual

◆ Translate()

HalfEdgeTriangleMesh & open3d::geometry::HalfEdgeTriangleMesh::Translate ( const Eigen::Vector3d &  translation,
bool  relative = true 
)
overridevirtual

Field Documentation

◆ adjacency_list_

std::vector<std::unordered_set<int> > open3d::geometry::HalfEdgeTriangleMesh::adjacency_list_

◆ 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_

◆ vertex_colors_

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

◆ vertex_normals_

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

◆ vertices_

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

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