public ExclusiveOrShape(Shape2D first, Shape2D second)
 {
     First   = first;
     Second  = second;
     Union   = new UnionShape(first, second);
     Overlap = new IntersectionShape(first, second);
 }
 public UnionShape(Shape2D first, Shape2D second)
 {
     First   = first;
     Second  = second;
     Overlap = new IntersectionShape(First, Second);
 }
 public DifferenceShape(Shape2D first, Shape2D second)
 {
     First   = first;
     Second  = second;
     Overlap = new IntersectionShape(first, second);
 }