public static bool Intersects(this Tri2D tri, IPrimitive primitive)
        {
            switch (primitive)
            {
            case Line2D line:
                return(Intersects(tri, line));

            case Rect2D rect:
                return(Intersects(tri, rect));

            case Tri2D other:
                return(Intersects(tri, other));

            case Circle circle:
                return(Intersects(tri, circle));

            default:
                throw new NotImplementedException($"Unsupported intersectable primitive {primitive.GetType()}");
            }
        }
        public static bool Contains(this Tri2D tri, IPrimitive primitive)
        {
            switch (primitive)
            {
            case Point2D point:
                return(Contains(tri, point));

            case Line2D line:
                return(Contains(tri, line));

            case Rect2D rect:
                return(Contains(tri, rect));

            case Tri2D other:
                return(Contains(tri, other));

            case Circle circle:
                return(Contains(tri, circle));

            default:
                throw new NotSupportedException($"Unsupported containable primitive {primitive.GetType()}");
            }
        }
 public static bool Intersects(this Circle circle, Tri2D tri)
 {
     throw new NotImplementedException();
 }
 public static bool Contains(this Circle circle, Tri2D tri)
 {
     throw new NotImplementedException();
 }
 public static bool Intersects(this Tri2D tri, Tri2D other)
 {
     throw new NotImplementedException();
 }
 public static bool Intersects(this Tri2D tri, Rect2D rect)
 {
     throw new NotImplementedException();
 }
 public static bool Intersects(this Tri2D tri, Line2D line)
 {
     throw new NotImplementedException();
 }
 public static bool Contains(this Tri2D tri, Tri2D other)
 {
     throw new NotImplementedException();
 }
 public static bool Contains(this Tri2D tri, Line2D line)
 {
     throw new NotImplementedException();
 }
 public static bool Contains(this Tri2D tri, Point2D point)
 {
     throw new NotImplementedException();
 }
 public static bool Contains(this Rect2D rect, Tri2D tri)
 {
     throw new NotImplementedException();
 }