public GridAxisIterator2D(EGridAxis2D axis, GridCoord2D startCoord, GridSize2D gridSize) { Axis = axis; StartIndex = startCoord.Index; GridIterator2D iterator = new GridIterator2D(gridSize); Step = iterator.Get(axis); }
public int Get(EGridAxis2D axis) { switch (axis) { case EGridAxis2D.X: return(X); case EGridAxis2D.Y: return(Y); } throw new NotImplementedException(); }
public int GetLine(TCell[] buffer, EGridAxis2D axis, int lineIndex) { int lineLength = Size.Get(axis); int iterator = Iterator.Get(axis); int cellIndex = Iterator.Get(axis.GetOther()) * lineIndex; for (int x = 0; x < lineLength; ++x) { buffer[x] = Cells[cellIndex]; cellIndex += iterator; } return(lineLength); }
public GridPoint2D Set(EGridAxis2D axis, int value) { switch (axis) { case EGridAxis2D.X: return(new GridPoint2D(value, Y)); case EGridAxis2D.Y: return(new GridPoint2D(X, value)); default: throw new NotImplementedException(); } }
public GridPoint2D Translate(EGridAxis2D axis, int distance) { switch (axis) { case EGridAxis2D.X: return(new GridPoint2D(X + distance, Y)); case EGridAxis2D.Y: return(new GridPoint2D(X, Y + distance)); default: throw new NotImplementedException(); } }
public GridCoord2D Set(GridSize2D size, EGridAxis2D axis, int value) { switch (axis) { case EGridAxis2D.X: return(new GridCoord2D(size, value, Point.Y)); case EGridAxis2D.Y: return(new GridCoord2D(size, Point.X, value)); default: throw new NotImplementedException(); } }
public static EGridAxis2D GetOther(this EGridAxis2D axis) { return(axis == EGridAxis2D.X ? EGridAxis2D.Y : EGridAxis2D.X); }
public GridAxes2D(EGridAxis2D a, EGridAxis2D b) { A = a; B = b; }