/// <summary>
/// A value indicating whether the Polygon has a seperating axis.
/// </summary>
/// <param name="other">The other Polygon.</param>
/// <param name="minOverlap">The MinimumOverlap.</param>
/// <param name="axis">The Axis.</param>
/// <returns>True of seperating axis.</returns>
private bool HasSeparatingAxisTo(Polygon other, ref float minOverlap, ref Vector2 axis)
{
int prev = Points.Length - 1;
for (int i = 0; i < Points.Length; i++)
{
Vector2 edge = Points[i] - Points[prev];
var v = new Vector2(edge.X, edge.Y);
v = v.CrossProduct();
v.Normalize();
float aMin, aMax, bMin, bMax;
ProjectTo(v, out aMin, out aMax);
other.ProjectTo(v, out bMin, out bMax);
if ((aMax < bMin) || (bMax < aMin))
return true;
float overlapping = aMax < bMax ? aMax - bMin : bMax - aMin;
if (overlapping < minOverlap)
{
minOverlap = overlapping;
axis = v;
}
prev = i;
}
return false;
}