public void TestMappingFromReal(double x, double y, int expectedX, int expectedY) { var c = GridCoordinatePair.FromReal(x, y); Assert.Equal(expectedX, c.X); Assert.Equal(expectedY, c.Y); }
public void TestMappingToReal() { var c = new GridCoordinatePair(0, -1); var(x, y) = GridCoordinatePair.ToReal(c); Assert.Equal(0.5, x); Assert.Equal(-0.5, y); }
public void TestTranslation(int x, int y) { var c = new GridCoordinatePair(10, 10); var c2 = c.Translation(x, y); Assert.Equal(10 + x, c2.X); Assert.Equal(10 + y, c2.Y); }
public bool AddPosition(GridCoordinatePair position) { if (_positions.Contains(position)) { return(false); } _positions.Add(position); return(true); }
public GridSegment(GridCoordinatePair a, GridCoordinatePair b) { if (a.X == b.X && a.Y == b.Y) { throw new ArgumentException("Segment must not be degenerate"); } _a = a; _b = b; }
public GridCircle(GridCoordinatePair center, int radius) { if (radius < 1) { throw new ArgumentOutOfRangeException(nameof(radius), radius, null); } _center = center; _radius = radius; }
public GridFan(GridCoordinatePair origin, int radius, Grid8Direction direction) { if (radius < 1) { throw new ArgumentOutOfRangeException(nameof(radius), radius, null); } _origin = origin; _radius = radius; _direction = direction; }
public void TestEquality() { var c1 = new GridCoordinatePair(2, 2); var c2 = new GridCoordinatePair(2, 2); var c3 = new GridCoordinatePair(); var c4 = new GridCoordinatePair(); Assert.Equal(c1, c2); Assert.True(c1 == c2); Assert.Equal(c3, c4); Assert.NotEqual(c1, c3); Assert.True(c1 != c3); }
public static IEnumerable <GridCoordinatePair> GetFloodFillCoordinates( GridCoordinatePair start, GridCoordinatePair[] walls, GridBoundingBox bounds) { var fill = new List <GridCoordinatePair>(); if (walls == null) { return(fill); } if (!bounds.Contains(start) || ArrayContains(start, walls)) { return(fill); } var queue = new Queue <GridCoordinatePair>(); queue.Enqueue(start); while (queue.Count > 0) { var c = queue.Dequeue(); if (fill.Contains(c) || ArrayContains(c, walls) || !bounds.Contains(c)) { continue; } fill.Add(c); queue.Enqueue(c.Translation(0, -1)); queue.Enqueue(c.Translation(0, 1)); queue.Enqueue(c.Translation(-1, 0)); queue.Enqueue(c.Translation(1, 0)); } return(fill); }
public SquareMapField GetFieldAt(GridCoordinatePair coordinates) { return(HasFieldAt(coordinates) ? _fields[coordinates] : null); }
public void TestEuclideanDistance(int x, int y, double expected) { var c = new GridCoordinatePair(0, 0); Assert.Equal(expected, c.EuclideanDistance(x, y), 3); }
public bool RemovePosition(GridCoordinatePair position) { return(_positions.Count != 1 && _positions.Remove(position)); }
public bool Contains(GridCoordinatePair position) { return(_positions.Contains(position)); }
public void TestManhattanDistance(int x, int y, int expected) { var c = new GridCoordinatePair(0, 0); Assert.Equal(expected, c.ManhattanDistance(x, y)); }
public GridPoint(GridCoordinatePair position) { Position = position; }
public bool HasFieldAt(GridCoordinatePair coordinates) { return(Shape.Contains(coordinates)); }
public SquareMapField(GridCoordinatePair coordinates, Feature area) { Coordinates = coordinates; Area = area; }
private IEnumerable <SquareMapField> FindAdjacentFields(GridCoordinatePair coordinates, bool includeDiagonallyAdjacent = false) { return(FindAdjacentFields(coordinates.X, coordinates.Y, includeDiagonallyAdjacent)); }
private static bool ArrayContains(GridCoordinatePair c, GridCoordinatePair[] walls) { return(Array.IndexOf(walls, c) != -1); }