Point Cloud Library (PCL) 1.12.0
|
General half-edge mesh that can store any polygon with a minimum number of vertices of 3. More...
#include <pcl/geometry/polygon_mesh.h>
Friends | |
class | pcl::geometry::MeshBase< PolygonMesh< MeshTraitsT >, MeshTraitsT, pcl::geometry::PolygonMeshTag > |
Additional Inherited Members | |
![]() | |
using | Vertex |
using | HalfEdge |
using | Face |
using | Vertices |
using | HalfEdges |
using | Faces |
using | VertexIterator |
using | HalfEdgeIterator |
using | FaceIterator |
using | VertexConstIterator |
using | HalfEdgeConstIterator |
using | FaceConstIterator |
![]() | |
void | deleteFace (const FaceIndex &idx_face, std::true_type) |
Manifold version of deleteFace. | |
void | deleteFace (const FaceIndex &idx_face, std::false_type) |
Non-manifold version of deleteFace. | |
bool | isBoundary (const FaceIndex &idx_face, std::true_type) const |
Check if any vertex of the face lies on the boundary. | |
bool | isBoundary (const FaceIndex &idx_face, std::false_type) const |
Check if any edge of the face lies on the boundary. | |
bool | isManifold (const VertexIndex &, std::true_type) const |
Always manifold. | |
bool | isManifold (const VertexIndex &idx_vertex, std::false_type) const |
Check if the given vertex is manifold. | |
bool | isManifold (std::true_type) const |
Always manifold. | |
bool | isManifold (std::false_type) const |
Check if all vertices in the mesh are manifold. | |
FaceIndex | addFaceImplBase (const VertexIndices &vertices, const FaceData &face_data, const EdgeData &edge_data, const HalfEdgeData &half_edge_data) |
General implementation of addFace. | |
HalfEdgeIndex | addEdge (const VertexIndex &idx_v_a, const VertexIndex &idx_v_b, const HalfEdgeData &he_data, const EdgeData &edge_data) |
Add an edge between the two given vertices and connect them with the vertices. | |
bool | checkTopology1 (const VertexIndex &idx_v_a, const VertexIndex &idx_v_b, HalfEdgeIndex &idx_he_ab, std::vector< bool >::reference is_new_ab, std::true_type) const |
Check if the edge between the two vertices can be added. | |
bool | checkTopology1 (const VertexIndex &idx_v_a, const VertexIndex &idx_v_b, HalfEdgeIndex &idx_he_ab, std::vector< bool >::reference is_new_ab, std::false_type) const |
Non manifold version of checkTopology1. | |
bool | checkTopology2 (const HalfEdgeIndex &, const HalfEdgeIndex &, const bool is_new_ab, const bool is_new_bc, const bool is_isolated_b, std::vector< bool >::reference, HalfEdgeIndex &, std::true_type) const |
Check if the face may be added (mesh does not become non-manifold). | |
bool | checkTopology2 (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, const bool is_new_ab, const bool is_new_bc, const bool, std::vector< bool >::reference make_adjacent_ab_bc, HalfEdgeIndex &idx_free_half_edge, std::false_type) const |
Check if the half-edge bc is the next half-edge of ab. | |
void | makeAdjacent (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, HalfEdgeIndex &idx_free_half_edge) |
Make the half-edges bc the next half-edge of ab. | |
FaceIndex | connectFace (const HalfEdgeIndices &inner_he, const FaceData &face_data) |
Add a face to the mesh and connect it to the half-edges. | |
void | connectPrevNext (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc) |
Connect the next and prev indices of the two half-edges with each other. | |
void | connectNewNew (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, const VertexIndex &idx_v_b, std::true_type) |
Both half-edges are new (manifold version). | |
void | connectNewNew (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, const VertexIndex &idx_v_b, std::false_type) |
Both half-edges are new (non-manifold version). | |
void | connectNewOld (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, const VertexIndex &idx_v_b) |
The first half-edge is new. | |
void | connectOldNew (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, const VertexIndex &idx_v_b) |
The second half-edge is new. | |
void | connectOldOld (const HalfEdgeIndex &, const HalfEdgeIndex &, const VertexIndex &, std::true_type) |
Both half-edges are old (manifold version). | |
void | connectOldOld (const HalfEdgeIndex &, const HalfEdgeIndex &idx_he_bc, const VertexIndex &idx_v_b, std::false_type) |
Both half-edges are old (non-manifold version). | |
void | addData (pcl::PointCloud< DataT > &cloud, const DataT &data, std::true_type) |
Add mesh data. | |
void | addData (pcl::PointCloud< DataT > &, const DataT &, std::false_type) |
Does nothing. | |
void | reconnect (const HalfEdgeIndex &idx_he_ab, const HalfEdgeIndex &idx_he_bc, const bool is_boundary_ba, const bool is_boundary_cb) |
Deconnect the input half-edges from the mesh and adjust the indices of the connected half-edges. | |
void | reconnectNBNB (const HalfEdgeIndex &idx_he_bc, const HalfEdgeIndex &idx_he_cb, const VertexIndex &idx_v_b, std::true_type) |
Both edges are not on the boundary. | |
void | reconnectNBNB (const HalfEdgeIndex &idx_he_bc, const HalfEdgeIndex &, const VertexIndex &idx_v_b, std::false_type) |
Both edges are not on the boundary. | |
void | markDeleted (const VertexIndex &idx_vertex) |
Mark the given vertex as deleted. | |
void | markDeleted (const HalfEdgeIndex &idx_he) |
Mark the given half-edge as deleted. | |
void | markDeleted (const EdgeIndex &idx_edge) |
Mark the given edge (both half-edges) as deleted. | |
void | markDeleted (const FaceIndex &idx_face) |
Mark the given face as deleted. | |
IndexContainerT | remove (ElementContainerT &elements, DataContainerT &data_cloud) |
Removes mesh elements and data that are marked as deleted from the container. | |
void | incrementIf (IteratorT &it, std::true_type) const |
Increment the iterator. | |
void | incrementIf (IteratorT &, std::false_type) const |
Does nothing. | |
void | assignIf (const ConstIteratorT source, IteratorT target, std::true_type) const |
Assign the source iterator to the target iterator. | |
void | assignIf (const ConstIteratorT, IteratorT, std::false_type) const |
Does nothing. | |
void | setOutgoingHalfEdgeIndex (const VertexIndex &idx_vertex, const HalfEdgeIndex &idx_outgoing_half_edge) |
Set the outgoing half-edge index to a given vertex. | |
void | setTerminatingVertexIndex (const HalfEdgeIndex &idx_half_edge, const VertexIndex &idx_terminating_vertex) |
Set the terminating vertex index to a given half-edge. | |
void | setNextHalfEdgeIndex (const HalfEdgeIndex &idx_half_edge, const HalfEdgeIndex &idx_next_half_edge) |
Set the next half_edge index to a given half-edge. | |
void | setPrevHalfEdgeIndex (const HalfEdgeIndex &idx_half_edge, const HalfEdgeIndex &idx_prev_half_edge) |
Set the previous half-edge index to a given half-edge. | |
void | setFaceIndex (const HalfEdgeIndex &idx_half_edge, const FaceIndex &idx_face) |
Set the face index to a given half-edge. | |
void | setInnerHalfEdgeIndex (const FaceIndex &idx_face, const HalfEdgeIndex &idx_inner_half_edge) |
Set the inner half-edge index to a given face. | |
void | reserveData (DataCloudT &cloud, const std::size_t n, std::true_type) const |
Reserve storage space for the mesh data. | |
void | reserveData (DataCloudT &, const std::size_t, std::false_type) const |
Does nothing. | |
void | resizeData (DataCloudT &, const std::size_t n, const typename DataCloudT::value_type &data, std::true_type) const |
Resize the mesh data. | |
void | resizeData (DataCloudT &, const std::size_t, const typename DataCloudT::value_type &, std::false_type) const |
Does nothing. | |
void | clearData (DataCloudT &cloud, std::true_type) const |
Clear the mesh data. | |
void | clearData (DataCloudT &, std::false_type) const |
Does nothing. | |
Vertex & | getVertex (const VertexIndex &idx_vertex) |
Get the vertex for the given index. | |
Vertex | getVertex (const VertexIndex &idx_vertex) const |
Get the vertex for the given index. | |
void | setVertex (const VertexIndex &idx_vertex, const Vertex &vertex) |
Set the vertex at the given index. | |
HalfEdge & | getHalfEdge (const HalfEdgeIndex &idx_he) |
Get the half-edge for the given index. | |
HalfEdge | getHalfEdge (const HalfEdgeIndex &idx_he) const |
Get the half-edge for the given index. | |
void | setHalfEdge (const HalfEdgeIndex &idx_he, const HalfEdge &half_edge) |
Set the half-edge at the given index. | |
Face & | getFace (const FaceIndex &idx_face) |
Get the face for the given index. | |
Face | getFace (const FaceIndex &idx_face) const |
Get the face for the given index. | |
void | setFace (const FaceIndex &idx_face, const Face &face) |
Set the face at the given index. | |
General half-edge mesh that can store any polygon with a minimum number of vertices of 3.
MeshTraitsT | Please have a look at pcl::geometry::DefaultMeshTraits. |
Definition at line 60 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::Base |
Definition at line 64 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::ConstPtr = shared_ptr<const Self> |
Definition at line 69 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::EdgeData = typename Base::EdgeData |
Definition at line 73 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::EdgeDataCloud = typename Base::EdgeDataCloud |
Definition at line 85 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::EdgeIndex = typename Base::EdgeIndex |
Definition at line 91 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::EdgeIndices = typename Base::EdgeIndices |
Definition at line 96 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::FaceAroundFaceCirculator = typename Base::FaceAroundFaceCirculator |
Definition at line 111 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::FaceAroundVertexCirculator = typename Base::FaceAroundVertexCirculator |
Definition at line 105 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::FaceData = typename Base::FaceData |
Definition at line 74 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::FaceDataCloud = typename Base::FaceDataCloud |
Definition at line 86 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::FaceIndex = typename Base::FaceIndex |
Definition at line 92 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::FaceIndices = typename Base::FaceIndices |
Definition at line 97 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::HalfEdgeData = typename Base::HalfEdgeData |
Definition at line 72 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::HalfEdgeDataCloud = typename Base::HalfEdgeDataCloud |
Definition at line 84 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::HalfEdgeIndex = typename Base::HalfEdgeIndex |
Definition at line 90 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::HalfEdgeIndices = typename Base::HalfEdgeIndices |
Definition at line 95 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::HasEdgeData = typename Base::HasEdgeData |
Definition at line 80 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::HasFaceData = typename Base::HasFaceData |
Definition at line 81 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::HasHalfEdgeData = typename Base::HasHalfEdgeData |
Definition at line 79 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::HasVertexData = typename Base::HasVertexData |
Definition at line 78 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::IncomingHalfEdgeAroundVertexCirculator |
Definition at line 103 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::InnerHalfEdgeAroundFaceCirculator |
Definition at line 107 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::IsManifold = typename Base::IsManifold |
Definition at line 75 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::MeshTag = typename Base::MeshTag |
Definition at line 76 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::OuterHalfEdgeAroundFaceCirculator |
Definition at line 109 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::OutgoingHalfEdgeAroundVertexCirculator |
Definition at line 101 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::Ptr = shared_ptr<Self> |
Definition at line 68 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::Self = PolygonMesh<MeshTraitsT> |
Definition at line 67 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::VertexAroundFaceCirculator = typename Base::VertexAroundFaceCirculator |
Definition at line 106 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::VertexAroundVertexCirculator = typename Base::VertexAroundVertexCirculator |
Definition at line 100 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::VertexData = typename Base::VertexData |
Definition at line 71 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::VertexDataCloud = typename Base::VertexDataCloud |
Definition at line 83 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::VertexIndex = typename Base::VertexIndex |
Definition at line 89 of file polygon_mesh.h.
using pcl::geometry::PolygonMesh< MeshTraitsT >::VertexIndices = typename Base::VertexIndices |
Definition at line 94 of file polygon_mesh.h.
|
inline |
Constructor.
Definition at line 114 of file polygon_mesh.h.
|
inline |
Add a triangle to the mesh.
Data is only added if it is associated with the elements. The last vertex is connected with the first one.
[in] | idx_v_0 | Index to the first vertex. |
[in] | idx_v_1 | Index to the second vertex. |
[in] | idx_v_2 | Index to the third vertex. |
[in] | face_data | Data that is set for the face. |
[in] | half_edge_data | Data that is set for all added half-edges. |
[in] | edge_data | Data that is set for all added edges. |
Definition at line 135 of file polygon_mesh.h.
References pcl::geometry::MeshBase< PolygonMesh< MeshTraitsT >, MeshTraitsT, PolygonMeshTag >::addFaceImplBase().
|
inline |
Add a quad to the mesh.
Data is only added if it is associated with the elements. The last vertex is connected with the first one.
[in] | idx_v_0 | Index to the first vertex. |
[in] | idx_v_1 | Index to the second vertex. |
[in] | idx_v_2 | Index to the third vertex. |
[in] | idx_v_3 | Index to the fourth vertex. |
[in] | face_data | Data that is set for the face. |
[in] | half_edge_data | Data that is set for all added half-edges. |
[in] | edge_data | Data that is set for all added edges. |
Definition at line 164 of file polygon_mesh.h.
References pcl::geometry::MeshBase< PolygonMesh< MeshTraitsT >, MeshTraitsT, PolygonMeshTag >::addFaceImplBase().
|
friend |
Definition at line 164 of file polygon_mesh.h.