示例#1
0
        public GridAxisIterator2D(EGridAxis2D axis, GridCoord2D startCoord, GridSize2D gridSize)
        {
            Axis       = axis;
            StartIndex = startCoord.Index;

            GridIterator2D iterator = new GridIterator2D(gridSize);

            Step = iterator.Get(axis);
        }
示例#2
0
        public int Get(EGridAxis2D axis)
        {
            switch (axis)
            {
            case EGridAxis2D.X:
                return(X);

            case EGridAxis2D.Y:
                return(Y);
            }
            throw new NotImplementedException();
        }
示例#3
0
        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);
        }
示例#4
0
        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();
            }
        }
示例#5
0
        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();
            }
        }
示例#6
0
        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();
            }
        }
示例#7
0
 public static EGridAxis2D GetOther(this EGridAxis2D axis)
 {
     return(axis == EGridAxis2D.X ? EGridAxis2D.Y : EGridAxis2D.X);
 }
示例#8
0
 public GridAxes2D(EGridAxis2D a, EGridAxis2D b)
 {
     A = a;
     B = b;
 }