public ProjectionPoint(int x, int y, int projectionX, int projectionY, ProjectionPoint axis) : base(x, y) { ProjectionX = projectionX; ProjectionY = projectionY; IsAxis = false; Axis = axis; }
public ProjectionPoint(int x, int y, ProjectionPoint axis) : base(x, y) { ProjectionX = x; ProjectionY = y; IsAxis = false; Axis = axis; }
public Figure(ProjectionPoint[] cells) { Cells = cells.ToImmutableArray(); }
private Figure PerformOperation(Func<ProjectionPoint, Point> calculateProjectionCoord) { var axis = Cells.First(cell => cell.IsAxis); Point newPointAxis = calculateProjectionCoord(axis); var newAxis = new ProjectionPoint(axis.X, axis.Y, newPointAxis.X, newPointAxis.Y); var cells = Cells .Where(projectionPoint => !projectionPoint.IsAxis) .Select(projectionPoint => { Point newPoint = calculateProjectionCoord(projectionPoint); return new ProjectionPoint( projectionPoint.X, projectionPoint.Y, newPoint.X, newPoint.Y, newAxis); }).ToList(); cells.Add(newAxis); return new Figure(cells); }
private static ProjectionPoint[] CellParse(EnterData.Figure.Point[] cells) { var axisPoint = cells.First(cell => cell.X == 0 && cell.Y == 0); var axisProjectionPoint = new ProjectionPoint(axisPoint.X, axisPoint.Y); var listCells = cells .Where(cell => !(cell.X == 0 && cell.Y == 0)) .Select(cell => new ProjectionPoint(cell.X, cell.Y, axisProjectionPoint)).ToList(); listCells.Add(axisProjectionPoint); return listCells.ToArray(); }