public interface ILcdEdgeValueFunction<N,E>
ILcdEdgeValueFunction
is a general function which returns values associated with
edges in a graph. Those values can describe all kinds of information: lengths, travel times,
tracing capacities, ...
The ILcdEdgeValueFunction
will only behave correctly if at least one of the two
following conditions is met:
ILcdEdgeValueFunction
is fully symmetrical (i.e. the edge value in positive
direction is the same as in negative direction, for all edges).
Modifier and Type  Method and Description 

double 
computeEdgeValue(ILcdGraph<N,E> aGraph,
ILcdRoute<N,E> aPrecedingRoute,
E aEdge,
TLcdTraversalDirection aTraversalDirection)
Returns the value associated with
aEdge . 
int 
getOrder()
Returns the order of this function.

double computeEdgeValue(ILcdGraph<N,E> aGraph, ILcdRoute<N,E> aPrecedingRoute, E aEdge, TLcdTraversalDirection aTraversalDirection)
aEdge
.aGraph
 the graph from which the edge is part.aPrecedingRoute
 the route, to which the edge connects (i.e. the end node of this route
is one of the two nodes connected by the edge). Depending on the
function, the information used from this route in the calculation of
the edge value can differ: a simple distance function will not use any
information from this route, while a turn function which describes a
relationship between two succeeding edges will typically use the last
edge of the route in its calculation. The route should be completely
contained in the given graph, otherwise the correct behavior of this
method is not guaranteed.aEdge
 the edge for which a value should be returned. This edge should be
part of the given graph and adjacent to the end of the given route,
otherwise the correct behavior of this method is not guaranteed.aTraversalDirection
 indicating whether the traversal direction should be forward or backward.
If BACKWARD
, the given edge will be traversed in
opposite direction, and the preceding route becomes thus the
succeeding route and vice versa.aEdge
int getOrder()
E.g. a simple cartesian distance function has order 0, because it doesn't use any other information than the edge length itself; a function which implements turn rules in traffic, will typically be of order 1, because it takes only the first preceding edge into account (i.e. de road from which the vehicle came from when entering the next road). Other, more complex functions can have a higher order.