/users/wolffm/guskov/Source/OpenMesh_HeapClasses.hh

Go to the documentation of this file.
00001 #ifndef DEF_VPROP_DISTANCE
00002 #define DEF_VPROP_DISTANCE
00003 
00004 
00005 #include "Common.hh"
00006 
00007 #include <Tools/Utils/HeapT.hh>
00008 
00009 
00015 class DijkstraInterface : public OpenMesh::Utils::HeapInterfaceT<Vertex>
00016 {
00017 public:
00018 
00019   /* Static pointeur sur le mesh dans lequel se trouve les noeuds stockés dans le heap
00020    *
00021    * On utilise les trois static pointeurs dans cette classe pour avoir accès au mesh
00022    * et les propiétés des noeuds mémorisés dedont qui déterminent l'ordre dans le heap.
00023    *
00024    * Doivent être initialisé avant utiliser un OpenMesh::HeapT avec cet interface
00025    *
00026    * @see vprop_distance
00027    * @see vprop_heappos
00028    *
00029    */
00030   static OriginalMesh* mesh;
00031 
00035   static OpenMesh::VPropHandleT< double >* vprop_distance;
00036 
00041   static OpenMesh::VPropHandleT< int >*   vprop_heappos;
00042 
00043   DijkstraInterface()
00044   {}
00045 
00047   bool  less (const Vertex& e1,  const Vertex& e2 )
00048   {
00049     return (float) mesh->property(*vprop_distance, e1) < (float) mesh->property(*vprop_distance, e2);
00050   }
00051 
00053   bool  greater (const Vertex& e1, const Vertex& e2)
00054   {
00055     return (float) mesh->property(*vprop_distance, e1) > (float) mesh->property(*vprop_distance, e2);
00056   }
00057         
00061   int   get_heap_position (const Vertex& e)
00062   {
00063     return mesh->property(*vprop_heappos, e);
00064   }
00065         
00069   void  set_heap_position (Vertex &e, int _i)
00070   {
00071     mesh->property(*vprop_heappos,e) = _i;
00072   }  
00073 
00074 };
00075 
00076 
00077 
00078 #endif

Generated on Fri Jun 15 17:24:59 2007 for GuskovRemeshing by  doxygen 1.5.2