double GetTieBreaker(GridCell cell)
{
/*
* http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html#S12
*/
int dx1 = cell.Position.X - grid.Destination.Position.X,
dy1 = cell.Position.Y - grid.Destination.Position.Y,
dx2 = grid.Source.Position.X - grid.Destination.Position.X,
dy2 = grid.Source.Position.Y - grid.Destination.Position.Y,
cross = Math.Abs(dx1 * dy2 - dx2 * dy1);
return cross * 0.01;
}
}