private Point GetNearestCenter(Point input)
        {
            foreach (Hexagon hex in _map)
            {
                if (GeometryOperation.IsPointInHex(hex.Faces, input))
                {
                    return(hex.Center);
                }
            }

            return(Point.Empty);
        }
        private Point SearchNextNode(Point start, Point end)
        {
            List <Point> line = GeometryOperation.GetPointsInLine(start, end);

            foreach (var hex in _near.Keys.Join(_near.Where(l => l.Key.Center.Equals(start)).FirstOrDefault()
                                                .Value, o => o.Center, i => i, (o, i) => new { o.Faces, o.Center }))
            {
                foreach (Point p in line)
                {
                    if (GeometryOperation.IsPointInHex(hex.Faces, p))
                    {
                        return(hex.Center);
                    }
                }
            }

            return(Point.Empty);
        }