Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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));
        }