public AddPointAfterAction(Surface surface, Vertex vertex, double x, double y) { Surface = surface; Vertex = vertex; X = x; Y = y; }
private Surface( Vertex position, IReadOnlyCollection<Vertex> points, bool isSelected, string name) { Points = ImmutableList.CreateRange(points); Position = position; IsSelected = isSelected; Name = name; }
public MovePointsAction(Surface surface, Vertex vertex, Vector delta) { Surface = surface; Points = new [] { vertex }; Delta = delta; }
public Surface RemovePoint(Vertex vertex) { return Create(Position, Points.Remove(vertex), IsSelected, Name); }
public Surface AddPoint(Vertex vertex, Vertex previous) { return Create(Position, Points.Insert(Points.IndexOf(previous) + 1, vertex), IsSelected, Name); }
public Surface MovePoint(Vertex vertex, Vector delta) { return Create(Position, Points.Replace(vertex, vertex.Move(delta)), IsSelected, Name); }
public Scene RemovePoint(Surface surface, Vertex vertex) { return Create(Surfaces.Replace(surface, surface.RemovePoint(vertex))); }
public Scene AddPoint(Surface surface, Vertex vertex, Vertex previous) { return Create(Surfaces.Replace(surface, surface.AddPoint(vertex, previous))); }
public Scene MovePoint(Surface surface, Vertex vertex, Vector delta) { return Create(Surfaces.Replace(surface, surface.MovePoint(vertex, delta))); }
public Line(Vertex a, Vertex b) { A = a; B = b; }
public static Surface Create( Vertex position, IReadOnlyCollection<Vertex> points, bool isSelected, string name) { if (points.Count < 3) { throw new InvalidOperationException(nameof(points.Count) + " should be more than 3"); } return new Surface(position, points, isSelected, name); }
public RemovePointAction(Surface surface, Vertex vertex) { Surface = surface; Vertex = vertex; }
public AddSurfaceAction(Vertex position, IReadOnlyCollection<Vertex> points, string name) { Position = position; Points = points; Name = name; }