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); }