2 #ifndef GEODESIC_ALGORITHM_DIJKSTRA_010506 3 #define GEODESIC_ALGORITHM_DIJKSTRA_010506 31 bool operator()(node_pointer
const s1, node_pointer
const s2)
const 50 unsigned m_source_index;
51 node_pointer m_previous;
66 m_nodes.resize(mesh->
vertices().size());
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);
80 void list_nodes_visible_from_node(node_pointer node,
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)
97 storage.push_back(&m_nodes[node_index(v)]);
103 for(
unsigned i=0; i<2; ++i)
106 storage.push_back(&m_nodes[node_index(v)]);
112 storage.push_back(&m_nodes[node_index(v)]);
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());
140 #endif //GEODESIC_ALGORITHM_DIJKSTRA_010506 ~GeodesicAlgorithmDijkstra()
unsigned & source_index()
vertex_pointer_vector & adjacent_vertices()
void list_nodes_visible_from_source(MeshElementBase *p, std::vector< node_pointer > &storage)
edge_pointer_vector & adjacent_edges()
GeodesicAlgorithmDijkstra(geodesic::Mesh *mesh)
double & distance_from_source()
vertex_pointer & vertex()
std::vector< Vertex > & vertices()
void list_nodes_visible_from_node(node_pointer node, std::vector< node_pointer > &storage, std::vector< double > &distances, double threshold_distance)
bool operator()(node_pointer const s1, node_pointer const s2) const
double distance(SurfacePoint *p)
double const GEODESIC_INF
double distance(double *v)
SurfacePoint surface_point()
vertex_pointer opposite_vertex(vertex_pointer v)
node_pointer & previous()