Ваша задача реализовать 2 алгоритма на языке C#:1) Weiler-Atherton The Weiler-Atherton polygon clipping algorithm - Lior Sinai2) A New Linear Algorithm for Intersecting Convex Polygons PII: 0146-664X(82)90023-5Условия:1) Работает корректно с какой-то разумной погрешностью2) Каждый алгоритм=отдельный класс, который удовлетворяет интерфейсу IClipperIClipper.cs:```public interface IClipper{ List
Clip(List polygons); List Clip(Polygon polygon1, Polygon polygon2);}```Polygon.cs:```public class Polygon{ public Polygon() { } public Polygon(List points) { Points = points; } public List Points { get; set; } = new();}```PointD.cs:```public struct PointD{ public double X { get; set; } public double Y { get; set; } public PointD(double x, double y) {X = x;Y = y; } public Point ToPoint() {return new Point((int)X, (int)Y); } public override bool Equals(object? obj) {return obj is PointD && this == (PointD)obj; } public override int GetHashCode() {return X.GetHashCode() ^ Y.GetHashCode(); } public static bool operator ==(PointD a, PointD b) {return a.X == b.X && a.Y == b.Y; } public static bool operator !=(PointD a, PointD b) {return !(a == b); } public override string ToString() => $"{{{X:#.####} {Y:#.####}}}";}```3) К каждому алгоритму прикладывается markdown файл, который поясняет суть алгоритма, его ограничения, временную сложность. Пример файла в виде картинки приложен.