private void AddItems(CircularBinaryGrid <string> grid, IntRectangle rect) { for (var x = rect.Left; x < rect.Right; x++) { for (var y = rect.Top; y < rect.Bottom; y++) { AddItem(grid, new IntVector(x, y, 0)); } } }
public Grid(int id, ICoordinateSystem coordinateSystem) { Id = id; CoordinateSystem = coordinateSystem; InnerGrid = new CircularBinaryGrid <Block>(new CoordinateSystem( coordinateSystem.MinX / Constants.BlockSize, coordinateSystem.MaxX / Constants.BlockSize, coordinateSystem.MinY / Constants.BlockSize, coordinateSystem.MaxY / Constants.BlockSize, coordinateSystem.MinZ / Constants.BlockSize, coordinateSystem.MaxZ / Constants.BlockSize)); }
public void Test1() { var coordinateSystem = CoordinateSystem.CreateHorizontalCircular(0, 10); var grid = new CircularBinaryGrid <string>(coordinateSystem); var rect = new IntRectangle(0, 0, 0, 2, 2, 1); var calls = new Dictionary <IntVector, string>(); EnumerateItemDelegate <string> func = (item, position) => calls.Add(position, item); AddItems(grid, new IntRectangle(-1, -1, 0, 4, 4, 1)); grid.ForEachWithin(rect, func); Assert.AreEqual(4, calls.Count); AssertItem(calls, new IntVector(0, 0, 0)); AssertItem(calls, new IntVector(1, 0, 0)); AssertItem(calls, new IntVector(0, 1, 0)); AssertItem(calls, new IntVector(1, 1, 0)); }
public void TestEnumerateAll() { var coordinateSystem = CoordinateSystem.CreateHorizontalCircular(0, 16); var grid = new CircularBinaryGrid <string>(coordinateSystem); var calls = new Dictionary <IntVector, string>(); EnumerateItemDelegate <string> func = (item, position) => { calls.Add(position, item); }; AddItems(grid, new IntRectangle(0, 0, 0, 16, 16, 1)); grid.ForEach(func); for (var x = 0; x < 16; x++) { for (var y = 0; y < 16; y++) { AssertItem(calls, new IntVector(x, y, 0)); } } }
private void AddItem(CircularBinaryGrid <string> grid, IntVector position) { grid.Set(position, grid.CoordinateSystem.Normalize(position).ToString()); }