Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef PCL_GEOMETRY_MESH_ELEMENTS_H
00042 #define PCL_GEOMETRY_MESH_ELEMENTS_H
00043
00044 #include <pcl/geometry/mesh_indices.h>
00045
00046 namespace pcl
00047 {
00048 namespace geometry
00049 {
00050 template <class DerivedT, class MeshTraitsT, class MeshTagT>
00051 class MeshBase;
00052
00053 template <class MeshT>
00054 class MeshIO;
00055 }
00056 }
00057
00059
00061
00062 namespace pcl
00063 {
00064 namespace geometry
00065 {
00070 class Vertex
00071 {
00072 private:
00073
00074 typedef pcl::geometry::HalfEdgeIndex HalfEdgeIndex;
00075
00079 explicit Vertex (const HalfEdgeIndex& idx_outgoing_half_edge = HalfEdgeIndex ())
00080 : idx_outgoing_half_edge_ (idx_outgoing_half_edge)
00081 {}
00082
00084 HalfEdgeIndex idx_outgoing_half_edge_;
00085
00086 template <class DerivedT, class MeshTraitsT, class MeshTagT>
00087 friend class pcl::geometry::MeshBase;
00088
00089 template <class MeshT>
00090 friend class pcl::geometry::MeshIO;
00091 };
00092 }
00093 }
00094
00096
00098
00099 namespace pcl
00100 {
00101 namespace geometry
00102 {
00107 class HalfEdge
00108 {
00109 private:
00110
00111 typedef pcl::geometry::VertexIndex VertexIndex;
00112 typedef pcl::geometry::HalfEdgeIndex HalfEdgeIndex;
00113 typedef pcl::geometry::FaceIndex FaceIndex;
00114
00121 explicit HalfEdge (const VertexIndex& idx_terminating_vertex = VertexIndex (),
00122 const HalfEdgeIndex& idx_next_half_edge = HalfEdgeIndex (),
00123 const HalfEdgeIndex& idx_prev_half_edge = HalfEdgeIndex (),
00124 const FaceIndex& idx_face = FaceIndex ())
00125 : idx_terminating_vertex_ (idx_terminating_vertex),
00126 idx_next_half_edge_ (idx_next_half_edge),
00127 idx_prev_half_edge_ (idx_prev_half_edge),
00128 idx_face_ (idx_face)
00129 {
00130 }
00131
00133 VertexIndex idx_terminating_vertex_;
00134
00136 HalfEdgeIndex idx_next_half_edge_;
00137
00139 HalfEdgeIndex idx_prev_half_edge_;
00140
00142 FaceIndex idx_face_;
00143
00144 template <class DerivedT, class MeshTraitsT, class MeshTagT>
00145 friend class pcl::geometry::MeshBase;
00146
00147 template <class MeshT>
00148 friend class pcl::geometry::MeshIO;
00149 };
00150 }
00151 }
00152
00154
00156
00157 namespace pcl
00158 {
00159 namespace geometry
00160 {
00165 class Face
00166 {
00167 private:
00168
00169 typedef pcl::geometry::HalfEdgeIndex HalfEdgeIndex;
00170
00174 explicit Face (const HalfEdgeIndex& idx_inner_half_edge = HalfEdgeIndex ())
00175 : idx_inner_half_edge_ (idx_inner_half_edge)
00176 {}
00177
00179 HalfEdgeIndex idx_inner_half_edge_;
00180
00181 template <class DerivedT, class MeshTraitsT, class MeshTagT>
00182 friend class pcl::geometry::MeshBase;
00183
00184 template <class MeshT>
00185 friend class pcl::geometry::MeshIO;
00186 };
00187 }
00188 }
00189
00190 #endif // PCL_GEOMETRY_MESH_ELEMENTS_H