public static Point SplitByNextIntersection(Point startPoint, LineSegment segment, out SegmentBase segment1, out SegmentBase segment2) { return SplitByNextIntersection(startPoint, segment, out segment1, out segment2, new LineEquation(startPoint, segment), (t, p) => new LineSegment(p), t => new LineSegment(segment.EndPoint)); }
public Subpath(Point startPoint, [NotNull] IEnumerable<SegmentBase> segments, bool isClosed) { StartPoint = startPoint; Segments = segments.ToReadOnlyList(); IsClosed = isClosed; if (Segments.Any(x => x == null)) { throw new ArgumentException(); } if (Segments.Count > 0 && EndPoint != StartPoint) { _closingSegment = new LineSegment(StartPoint); } }
// ReSharper disable once SuggestBaseTypeForParameter public LineEquation(Point startPoint, LineSegment segment) { _startPoint = startPoint; _endPoint = segment.EndPoint; }