package edu.kit.pse.ws2013.routekit.map;
import java.util.Set;
import edu.kit.pse.ws2013.routekit.util.Coordinates;
import edu.kit.pse.ws2013.routekit.util.PointOnEdge;
/**
* A geometrical data structure to quickly find all edges in a certain section
* of the map.
*/
public interface GraphIndex {
/**
* Finds the nearest point on an edge of the map.
*
* @param coords
* The coordinates of the point.
* @return The nearest point on an edge (edge + part of the edge)
*/
public PointOnEdge findNearestPointOnEdge(Coordinates coords);
/**
* Determines all edges within a rectangular section of the graph.
*
* @param leftTop
* The coordinates of the upper left corner of the section.
* @param rightBottom
* The coordinates of the lower right corner of the section.
* @return A {@link Set} of all edges within the given section.
*/
public Set<Integer> getEdgesInRectangle(Coordinates leftTop,
Coordinates rightBottom);
public GraphView getView();
}