2#ifndef GEODESIC_ALGORITHM_DIJKSTRA_010506
3#define GEODESIC_ALGORITHM_DIJKSTRA_010506
31 bool operator()(node_pointer
const s1, node_pointer
const s2)
const
40 return m_vertex->distance(p);
50 unsigned m_source_index;
51 node_pointer m_previous;
67 for(
unsigned i=0; i<
m_nodes.size(); ++i)
69 m_nodes[i].vertex() = &m_mesh->vertices()[i];
78 std::vector<node_pointer>& storage);
81 std::vector<node_pointer>& storage,
82 std::vector<double>& distances,
83 double threshold_distance);
87 std::vector<node_pointer>& storage)
94 for(
unsigned i=0; i<3; ++i)
103 for(
unsigned i=0; i<2; ++i)
117 std::vector<node_pointer>& storage,
118 std::vector<double>& distances,
119 double threshold_distance)
122 assert(storage.size() == distances.size());
132 storage.push_back(new_node);
133 distances.push_back(e->
length());
SurfacePoint surface_point()
bool operator()(node_pointer const s1, node_pointer const s2) const
vertex_pointer & vertex()
unsigned & source_index()
double distance(SurfacePoint *p)
double & distance_from_source()
node_pointer & previous()
vertex_pointer opposite_vertex(vertex_pointer v)
void list_nodes_visible_from_node(node_pointer node, std::vector< node_pointer > &storage, std::vector< double > &distances, double threshold_distance)
GeodesicAlgorithmDijkstra(geodesic::Mesh *mesh)
void list_nodes_visible_from_source(MeshElementBase *p, std::vector< node_pointer > &storage)
~GeodesicAlgorithmDijkstra()
std::vector< DijkstraNode > m_nodes
unsigned node_index(vertex_pointer v)
GeodesicAlgorithmGraphBase(geodesic::Mesh *mesh)
edge_pointer_vector & adjacent_edges()
vertex_pointer_vector & adjacent_vertices()
double const GEODESIC_INF