63#ifndef OPENMESH_MESH_DUAL_H
64#define OPENMESH_MESH_DUAL_H
70#if defined(OM_CC_MIPS)
76#include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh>
77#include <OpenMesh/Core/Utils/Property.hh>
94template <
typename MeshTraits>
95PolyMesh_ArrayKernelT<MeshTraits>* MeshDual (PolyMesh_ArrayKernelT<MeshTraits> &primal)
97 PolyMesh_ArrayKernelT<MeshTraits>* dual =
new PolyMesh_ArrayKernelT<MeshTraits>();
102 FPropHandleT< typename PolyMesh_ArrayKernelT<MeshTraits>::VertexHandle > primalToDual;
103 primal.add_property(primalToDual);
111 centerPoint += primal.point(*vit);
113 centerPoint /= degree;
114 primal.property(primalToDual, *fit) = dual->add_vertex(centerPoint);
118 std::vector< typename PolyMesh_ArrayKernelT<MeshTraits>::VertexHandle > face_vhandles;
121 if(!primal.is_boundary(*vit))
123 face_vhandles.clear();
125 face_vhandles.push_back(primal.property(primalToDual, *fit));
126 dual->add_face(face_vhandles);
130 primal.remove_property(primalToDual);
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition MeshItems.hh:64
AttribKernel::ConstFaceIter ConstFaceIter
Definition PolyMeshT.hh:154
AttribKernel::Scalar Scalar
Definition PolyMeshT.hh:113
AttribKernel::ConstFaceVertexIter ConstFaceVertexIter
Definition PolyMeshT.hh:180
AttribKernel::ConstVertexFaceIter ConstVertexFaceIter
Definition PolyMeshT.hh:179
AttribKernel::ConstVertexIter ConstVertexIter
Definition PolyMeshT.hh:151
AttribKernel::Point Point
Definition PolyMeshT.hh:115