typedef boost::numeric::ublas::vector<double> EuclideanVector_t;
typedef std::size_t VertexIndex_t;
// Information needed about a vertex: name and physical position
struct VertexProperties {
VertexIndex_t VertexIndex;
std::string VertexName;
EuclideanVector_t VertexPhysicalPosition;
};
struct EdgeProperties {
double EdgeEuclideanLength;
EuclideanVector_t EdgeUnitDirector;
};
// graph type (vertices are points in a Euclidean space, edges are rectilinear segments)
typedef boost::adjacency_list<boost::vecS, boost::listS,
boost::directedS, VertexProperties, EdgeProperties>
GraphRectilinearEdges_t;
// Vertex iterator type
typedef boost::graph_traits<GraphRectilinearEdges_t>::vertex_iterator GraphVertexIterator_t;
// Edge iterator type
typedef boost::graph_traits<GraphRectilinearEdges_t>::edge_iterator GraphEdgeIterator_t;
// A path is a sequence of vertices in the Graph, implemented as vector whose entries are vertex indices
class GraphPath_t {
private:
boost::numeric::ublas::vector<VertexIndex_t>;
double PathLength;
public:
};