Fawkes API  Fawkes Development Version
fawkes::NavGraphEdge Class Reference

Topological graph edge. More...

#include <>>

Public Member Functions

 NavGraphEdge ()
 Constructor for an invalid edge. More...
 
 NavGraphEdge (const std::string &from, const std::string &to, std::map< std::string, std::string > properties, bool directed=false)
 Constructor. More...
 
 NavGraphEdge (const std::string &from, const std::string &to, bool directed=false)
 Constructor. More...
 
const std::string & from () const
 Get edge originating node name. More...
 
const std::string & to () const
 Get edge target node name. More...
 
const NavGraphNodefrom_node () const
 Get edge originating node. More...
 
const NavGraphNodeto_node () const
 Get edge target node. More...
 
fawkes::cart_coord_2d_t closest_point_on_edge (float x, float y) const
 Get the point on edge closest to a given point. More...
 
bool intersects (float x1, float y1, float x2, float y2) const
 Check if the edge intersects with another line segment. More...
 
bool intersection (float x1, float y1, float x2, float y2, fawkes::cart_coord_2d_t &ip) const
 Check if the edge intersects with another line segment. More...
 
void set_from (const std::string &from)
 Set originating node name. More...
 
void set_to (const std::string &to)
 Set target node name. More...
 
void set_directed (bool directed)
 Set directed state. More...
 
const std::map< std::string, std::string > & properties () const
 Get all properties. More...
 
bool has_property (const std::string &property) const
 Check if node has specified property. More...
 
void set_properties (const std::map< std::string, std::string > &properties)
 Overwrite properties with given ones. More...
 
void set_property (const std::string &property, const std::string &value)
 Set property. More...
 
void set_property (const std::string &property, const char *value)
 Set property. More...
 
void set_property (const std::string &property, float value)
 Set property. More...
 
void set_property (const std::string &property, int value)
 Set property. More...
 
void set_property (const std::string &property, bool value)
 Set property. More...
 
float property_as_float (const std::string &prop) const
 Get property converted to float. More...
 
int property_as_int (const std::string &prop) const
 Get property converted to int. More...
 
bool property_as_bool (const std::string &prop) const
 Get property converted to bol. More...
 
bool is_valid () const
 Check if edge is valid. More...
 
bool is_directed () const
 Check if edge is directed. More...
 
std::string property (const std::string &prop) const
 Get specified property as string. More...
 
float property_as_float (const std::string &prop)
 Get property converted to float. More...
 
int property_as_int (const std::string &prop)
 Get property converted to int. More...
 
bool property_as_bool (const std::string &prop)
 Get property converted to bol. More...
 
bool operator== (const NavGraphEdge &e) const
 Check edges for equality. More...
 
bool operator< (const NavGraphEdge &e) const
 Less than operator based on node from and to names. More...
 
 operator bool () const
 Check of edge is valid. More...
 
void set_nodes (const NavGraphNode &from_node, const NavGraphNode &to_node)
 Set nodes. More...
 

Friends

class NavGraph
 

Detailed Description

Topological graph edge.

Author
Tim Niemueller

Definition at line 39 of file navgraph_edge.h.

Constructor & Destructor Documentation

◆ NavGraphEdge() [1/3]

fawkes::NavGraphEdge::NavGraphEdge ( )

Constructor for an invalid edge.

Definition at line 52 of file navgraph_edge.cpp.

◆ NavGraphEdge() [2/3]

fawkes::NavGraphEdge::NavGraphEdge ( const std::string &  from,
const std::string &  to,
std::map< std::string, std::string >  properties,
bool  directed = false 
)

Constructor.

Parameters
fromoriginating node name
totarget node name
propertiesproperties of the new node
directedtrue if the edge is directed, false for bidirectional edges

Definition at line 64 of file navgraph_edge.cpp.

◆ NavGraphEdge() [3/3]

fawkes::NavGraphEdge::NavGraphEdge ( const std::string &  from,
const std::string &  to,
bool  directed = false 
)

Constructor.

Parameters
fromoriginating node name
totarget node name
directedtrue if the edge is directed, false for bidirectional edges

Definition at line 80 of file navgraph_edge.cpp.

Member Function Documentation

◆ closest_point_on_edge()

cart_coord_2d_t fawkes::NavGraphEdge::closest_point_on_edge ( float  x,
float  y 
) const

Get the point on edge closest to a given point.

The method determines a line perpendicular to the edge which goes through the given point, i.e. the point must be within the imaginary line segment. Then the point on the edge which crosses with that perpendicular line is returned.

Parameters
xX coordinate of point to get point on edge for
yY coordinate of point to get point on edge for
Returns
coordinate of point on edge closest to given point
Exceptions
Exceptionthrown if the point is out of the line segment and no line perpendicular to the edge going through the given point can be found.

Definition at line 226 of file navgraph_edge.cpp.

Referenced by fawkes::NavGraph::connect_node_to_closest_edge(), and to_node().

◆ from()

◆ from_node()

const NavGraphNode& fawkes::NavGraphEdge::from_node ( ) const
inline

Get edge originating node.

Returns
edge originating node

Definition at line 65 of file navgraph_edge.h.

Referenced by operator bool().

◆ has_property()

bool fawkes::NavGraphEdge::has_property ( const std::string &  property) const
inline

Check if node has specified property.

Parameters
propertyproperty key
Returns
true if node has specified property, false otherwise

Definition at line 92 of file navgraph_edge.h.

References property(), set_properties(), and set_property().

◆ intersection()

bool fawkes::NavGraphEdge::intersection ( float  x1,
float  y1,
float  x2,
float  y2,
fawkes::cart_coord_2d_t ip 
) const

Check if the edge intersects with another line segment.

Parameters
x1X coordinate of first point of line segment to test
y1Y coordinate of first point of line segment to test
x2X coordinate of first point of line segment to test
y2Y coordinate of first point of line segment to test
ipupon returning true contains intersection point, not modified is return value is false
Returns
true if the edge intersects with the line segment, false otherwise

Definition at line 256 of file navgraph_edge.cpp.

References fawkes::line_segm_intersection(), fawkes::cart_coord_2d_struct::x, and fawkes::cart_coord_2d_struct::y.

Referenced by to_node().

◆ intersects()

bool fawkes::NavGraphEdge::intersects ( float  x1,
float  y1,
float  x2,
float  y2 
) const

Check if the edge intersects with another line segment.

Parameters
x1X coordinate of first point of line segment to test
y1Y coordinate of first point of line segment to test
x2X coordinate of first point of line segment to test
y2Y coordinate of first point of line segment to test
Returns
true if the edge intersects with the line segment, false otherwise

Definition at line 285 of file navgraph_edge.cpp.

References fawkes::line_segm_intersect().

Referenced by to_node().

◆ is_directed()

bool fawkes::NavGraphEdge::is_directed ( ) const
inline

Check if edge is directed.

Returns
true if edge is directed, false otherwise.

Definition at line 133 of file navgraph_edge.h.

References property().

Referenced by fawkes::NavGraph::cost(), NavGraphVisualizationThread::loop(), fawkes::save_yaml_navgraph(), and NavGraphInteractiveThread::~NavGraphInteractiveThread().

◆ is_valid()

bool fawkes::NavGraphEdge::is_valid ( ) const
inline

Check if edge is valid.

An edge is valid iff it has originating and target node name values.

Returns
true if edge is valid, false otherwise

Definition at line 127 of file navgraph_edge.h.

◆ operator bool()

fawkes::NavGraphEdge::operator bool ( ) const
inline

Check of edge is valid.

An edge is valid if both the originating and the target node name is set to a non-empty string.

Returns
true if the node is valid, false otherwise

Definition at line 184 of file navgraph_edge.h.

References from_node(), set_nodes(), and to_node().

◆ operator<()

bool fawkes::NavGraphEdge::operator< ( const NavGraphEdge e) const
inline

Less than operator based on node from and to names.

One edge is less than another if this is true for their respective names.

Parameters
eedge to compare with
Returns
true if this edge is less than the given one

Definition at line 175 of file navgraph_edge.h.

◆ operator==()

bool fawkes::NavGraphEdge::operator== ( const NavGraphEdge e) const
inline

Check edges for equality.

Edges are equal if they have the same origination and destination nodes and the same directed status.

Parameters
eedge to compare with
Returns
true if the node is the same as this one, false otherwise

Definition at line 166 of file navgraph_edge.h.

◆ properties()

const std::map<std::string, std::string>& fawkes::NavGraphEdge::properties ( ) const
inline

Get all properties.

Returns
property map

Definition at line 85 of file navgraph_edge.h.

Referenced by fawkes::NavGraph::connect_node_to_closest_edge(), and fawkes::NavGraph::cost().

◆ property()

std::string fawkes::NavGraphEdge::property ( const std::string &  prop) const

Get specified property as string.

Parameters
propproperty key
Returns
property value as string

Definition at line 142 of file navgraph_edge.cpp.

Referenced by has_property(), is_directed(), fawkes::load_yaml_navgraph(), property_as_bool(), property_as_float(), and property_as_int().

◆ property_as_bool() [1/2]

bool fawkes::NavGraphEdge::property_as_bool ( const std::string &  prop) const
inline

Get property converted to bol.

Parameters
propproperty key
Returns
property value

Definition at line 120 of file navgraph_edge.h.

References property(), and fawkes::StringConversions::to_bool().

◆ property_as_bool() [2/2]

bool fawkes::NavGraphEdge::property_as_bool ( const std::string &  prop)
inline

Get property converted to bol.

Parameters
propproperty key
Returns
property value

Definition at line 157 of file navgraph_edge.h.

References property(), and fawkes::StringConversions::to_bool().

◆ property_as_float() [1/2]

float fawkes::NavGraphEdge::property_as_float ( const std::string &  prop) const
inline

Get property converted to float.

Parameters
propproperty key
Returns
property value

Definition at line 106 of file navgraph_edge.h.

References property(), and fawkes::StringConversions::to_float().

◆ property_as_float() [2/2]

float fawkes::NavGraphEdge::property_as_float ( const std::string &  prop)
inline

Get property converted to float.

Parameters
propproperty key
Returns
property value

Definition at line 143 of file navgraph_edge.h.

References property(), and fawkes::StringConversions::to_float().

◆ property_as_int() [1/2]

int fawkes::NavGraphEdge::property_as_int ( const std::string &  prop) const
inline

Get property converted to int.

Parameters
propproperty key
Returns
property value

Definition at line 113 of file navgraph_edge.h.

References property(), and fawkes::StringConversions::to_int().

◆ property_as_int() [2/2]

int fawkes::NavGraphEdge::property_as_int ( const std::string &  prop)
inline

Get property converted to int.

Parameters
propproperty key
Returns
property value

Definition at line 150 of file navgraph_edge.h.

References property(), and fawkes::StringConversions::to_int().

◆ set_directed()

void fawkes::NavGraphEdge::set_directed ( bool  directed)

Set directed state.

Parameters
directedtrue if the edge is directed, false for bidirectional edges

Definition at line 132 of file navgraph_edge.cpp.

Referenced by fawkes::operator>>(), to_node(), and NavGraphInteractiveThread::~NavGraphInteractiveThread().

◆ set_from()

void fawkes::NavGraphEdge::set_from ( const std::string &  from)

Set originating node name.

Parameters
fromoriginating node name

Definition at line 91 of file navgraph_edge.cpp.

Referenced by fawkes::operator>>(), and to_node().

◆ set_nodes()

void fawkes::NavGraphEdge::set_nodes ( const NavGraphNode from_node,
const NavGraphNode to_node 
)

Set nodes.

Parameters
from_nodeoriginating node
to_nodetarget node

Definition at line 112 of file navgraph_edge.cpp.

References fawkes::NavGraphNode::name().

Referenced by operator bool().

◆ set_properties()

void fawkes::NavGraphEdge::set_properties ( const std::map< std::string, std::string > &  properties)

Overwrite properties with given ones.

Parameters
propertiesmap of properties to set

Definition at line 156 of file navgraph_edge.cpp.

Referenced by fawkes::NavGraph::connect_node_to_closest_edge(), and has_property().

◆ set_property() [1/5]

void fawkes::NavGraphEdge::set_property ( const std::string &  property,
const std::string &  value 
)

Set property.

Parameters
propertyproperty key
valueproperty value

Definition at line 166 of file navgraph_edge.cpp.

Referenced by fawkes::NavGraph::connect_node_to_closest_edge(), fawkes::NavGraph::connect_node_to_closest_node(), fawkes::NavGraph::cost(), has_property(), and fawkes::operator>>().

◆ set_property() [2/5]

void fawkes::NavGraphEdge::set_property ( const std::string &  property,
const char *  value 
)

Set property.

Parameters
propertyproperty key
valueproperty value

Definition at line 177 of file navgraph_edge.cpp.

◆ set_property() [3/5]

void fawkes::NavGraphEdge::set_property ( const std::string &  property,
float  value 
)

Set property.

Parameters
propertyproperty key
valueproperty value

Definition at line 188 of file navgraph_edge.cpp.

References fawkes::StringConversions::to_string().

◆ set_property() [4/5]

void fawkes::NavGraphEdge::set_property ( const std::string &  property,
int  value 
)

Set property.

Parameters
propertyproperty key
valueproperty value

Definition at line 198 of file navgraph_edge.cpp.

References fawkes::StringConversions::to_string().

◆ set_property() [5/5]

void fawkes::NavGraphEdge::set_property ( const std::string &  property,
bool  value 
)

Set property.

Parameters
propertyproperty key
valueproperty value

Definition at line 208 of file navgraph_edge.cpp.

◆ set_to()

void fawkes::NavGraphEdge::set_to ( const std::string &  to)

Set target node name.

Parameters
totarget node name

Definition at line 101 of file navgraph_edge.cpp.

Referenced by fawkes::operator>>(), and to_node().

◆ to()

◆ to_node()

const NavGraphNode& fawkes::NavGraphEdge::to_node ( ) const
inline

Get edge target node.

Returns
edge target node

Definition at line 70 of file navgraph_edge.h.

References closest_point_on_edge(), intersection(), intersects(), set_directed(), set_from(), and set_to().

Referenced by operator bool().


The documentation for this class was generated from the following files: