43 #ifndef TETRAHEDRALMESHTOPOLOGYKERNEL_HH 44 #define TETRAHEDRALMESHTOPOLOGYKERNEL_HH 51 #include "../Core/TopologyKernel.hh" 52 #include "TetrahedralMeshIterators.hh" 69 FaceHandle add_face(
const std::vector<HalfEdgeHandle>& _halfedges,
bool _topologyCheck =
false)
override;
73 CellHandle add_cell(
const std::vector<HalfFaceHandle>& _halffaces,
bool _topologyCheck =
false)
override;
75 CellHandle add_cell(
const std::vector<VertexHandle>& _vertices,
bool _topologyCheck =
false);
79 HalfFaceHandle add_halfface(
const std::vector<HalfEdgeHandle>& _halfedges,
bool _topologyCheck =
false);
84 std::vector<VertexHandle> get_cell_vertices(
CellHandle ch)
const;
86 std::vector<VertexHandle> get_cell_vertices(
HalfFaceHandle hfh)
const;
89 std::vector<VertexHandle> get_halfface_vertices(
HalfFaceHandle hfh)
const;
106 friend class TetVertexIter;
108 typedef class TetVertexIter TetVertexIter;
110 TetVertexIter tv_iter(
const CellHandle& _ref_h,
int _max_laps = 1)
const {
111 return TetVertexIter(_ref_h,
this, _max_laps);
114 std::pair<TetVertexIter,TetVertexIter> tet_vertices(
const CellHandle& _ref_h,
int _max_laps = 1)
const {
115 TetVertexIter begin = tv_iter(_ref_h, _max_laps);
116 TetVertexIter end = make_end_circulator(begin);
117 return std::make_pair(begin, end);
124 template <
typename PropIterator,
typename Handle>
125 void swapPropertyElements(PropIterator begin, PropIterator end, Handle source, Handle destination)
127 PropIterator p_iter = begin;
128 for (; p_iter != end; ++p_iter)
129 (*p_iter)->swap_elements(source, destination);
A data structure based on PolyhedralMesh with specializations for tetrahedra.
FaceHandle add_face(const std::vector< HalfEdgeHandle > &_halfedges, bool _topologyCheck=false) override
Add face via incident edges.
CellHandle add_cell(const std::vector< HalfFaceHandle > &_halffaces, bool _topologyCheck=false) override
Add cell via incident halffaces.