Graph is used to represent a road network. That means we have nodes and segments connecting them. The algorithm was already presented in one of the earlier sections (for a 2d world).
Note that the structure of all planner classes is very similar, we create a path and call drawPath(), providing it with drawDecorations() if necessary.
This algorithm has one big problem, whish i will address in future sections. It begins with looking for the closest node... but what if there is no way to get to this closest node? So at some point it should be replaced by "getClosestNodeWhereICanDrive()".
Here is a route produced by a sample "main" function of the class. Note that the route is going around a mountain and not across it, just the way it should be.