public static IEnumerable <MapPoint> ShapeCones(int x, int y, int radiusMin, int radiusMax, int dirX = 0, int dirY = 0) { List <MapPoint> range = new List <MapPoint>(); for (var radius = (radiusMin == 0 ? 1 : radiusMin); radius <= radiusMax; radius++) { range.Add(MapPoint.FromCoords(x - radius, y)); range.Add(MapPoint.FromCoords(x + radius, y)); range.Add(MapPoint.FromCoords(x, y - radius)); range.Add(MapPoint.FromCoords(x, y + radius)); for (var i = 1; i < radius; i++) { range.Add(MapPoint.FromCoords(x + radius, y + i)); range.Add(MapPoint.FromCoords(x + radius, y - i)); range.Add(MapPoint.FromCoords(x - radius, y + i)); range.Add(MapPoint.FromCoords(x - radius, y - i)); range.Add(MapPoint.FromCoords(x + i, y + radius)); range.Add(MapPoint.FromCoords(x - i, y + radius)); range.Add(MapPoint.FromCoords(x + i, y - radius)); range.Add(MapPoint.FromCoords(x - i, y - radius)); } } return(range.Where(c => c != null)); }
public static IEnumerable <MapPoint> ShapeLine(int x, int y, int radiusMin, int radiusMax, int dirX = 0, int dirY = 0) { List <MapPoint> range = new List <MapPoint>(); for (var i = radiusMin; i <= radiusMax; i++) { range.Add(MapPoint.FromCoords(x + dirX * i, y + dirY * i)); } return(range.Where(c => c != null)); }
public static IEnumerable <MapPoint> ShapePerpendicular(int x, int y, int radiusMin, int radiusMax, int dirX = 0, int dirY = 0) { List <MapPoint> range = new List <MapPoint>(); if (radiusMin == 0) { range.Add(MapPoint.FromCoords(x, y)); } for (var i = (radiusMin == 0 ? 1 : radiusMin); i <= radiusMax; i++) { range.Add(MapPoint.FromCoords(x + dirY * i, y - dirX * i)); range.Add(MapPoint.FromCoords(x - dirY * i, y + dirX * i)); } return(range.Where(c => c != null)); }
public static IEnumerable <MapPoint> ShapeCross(int x, int y, int radiusMin, int radiusMax, int dirX = 0, int dirY = 0) { List <MapPoint> range = new List <MapPoint>(); if (radiusMin == 0) { range.Add(MapPoint.FromCoords(x, y)); } for (int i = (radiusMin == 0 ? 1 : radiusMin); i <= radiusMax; i++) { range.Add(MapPoint.FromCoords(x - i, y)); range.Add(MapPoint.FromCoords(x + i, y)); range.Add(MapPoint.FromCoords(x, y - i)); range.Add(MapPoint.FromCoords(x, y + i)); } return(range.Where(c => c != null)); }
public static IEnumerable <MapPoint> ShapeHalfcircle(int x, int y, int radiusMin, int radiusMax, int dirX = 0, int dirY = 0) { List <MapPoint> range = new List <MapPoint>(); if (radiusMin == 0) { range.Add(MapPoint.FromCoords(x, y)); } for (var radius = (radiusMin == 0 ? 1 : radiusMin); radius <= radiusMax; radius++) { var xx = x - radius * dirX; var yy = y - radius * dirY; range.Add(MapPoint.FromCoords(xx + radius * dirY, yy - radius * dirX)); range.Add(MapPoint.FromCoords(xx - radius * dirY, yy + radius * dirX)); } return(range.Where(c => c != null)); }
public static IEnumerable <MapPoint> ShapeCone(int x, int y, int radiusMin, int radiusMax, int dirX = 0, int dirY = 0) { List <MapPoint> range = new List <MapPoint>(); for (var radius = radiusMin; radius <= radiusMax; radius++) { var xx = x + radius * dirX; var yy = y + radius * dirY; range.Add(MapPoint.FromCoords(xx, yy)); for (var i = 1; i <= radius; i++) { range.Add(MapPoint.FromCoords(xx + i * dirY, yy - i * dirX)); range.Add(MapPoint.FromCoords(xx - i * dirY, yy + i * dirX)); } } return(range.Where(c => c != null)); }
public static IEnumerable <MapPoint> ShapeRing(int x, int y, int radiusMin, int radiusMax, int dirX = 0, int dirY = 0) { List <MapPoint> range = new List <MapPoint>(); if (radiusMin == 0) { range.Add(MapPoint.FromCoords(x, y)); } for (int radius = (radiusMin == 0 ? 1 : radiusMin); radius <= radiusMax; radius++) { for (int i = 0; i < radius; i++) { int r = radius - i; range.Add(MapPoint.FromCoords(x + i, y - r)); range.Add(MapPoint.FromCoords(x + r, y + i)); range.Add(MapPoint.FromCoords(x - i, y + r)); range.Add(MapPoint.FromCoords(x - r, y - i)); } } return(range.Where(c => c != null)); }