/// <summary>
/// Calculates the symmetric difference between two polygons.
/// </summary>
/// <param name="a">A polygon.</param>
/// <param name="b">A polygon.</param>
/// <returns>The symmetric difference of <paramref name="a"/> and <paramref name="b"/>.</returns>
public IPlanarGeometry Xor(Polygon2 a, Polygon2 b)
{
if (null == a)
{
return(b);
}
if (null == b)
{
return(a);
}
var removedFromA = _differenceOperation.Difference(a, b) as Polygon2;
var removedFromB = _differenceOperation.Difference(b, a) as Polygon2;
var unionedLeftovers = _unionOperation.Union(removedFromA, removedFromB);
return(unionedLeftovers);
}