public static bool axisCollision(Vector2[] aVerts, Vector2[] bVerts, Vector2 axis)
{
float aMin, aMax, bMin, bMax;
float angle = angleBetweenVectors(aVerts[0], axis);
float dist = (float)Math.Cos(angle) * aVerts[0].Length();
aMin = dist;
aMax = dist;
for (int v = 1; v < aVerts.Length; v++)
{
angle = angleBetweenVectors(aVerts[v], axis);
dist = (float)Math.Cos(angle) * aVerts[v].Length();
if (dist < aMin)
aMin = dist;
else if (dist > aMax)
aMax = dist;
}
angle = angleBetweenVectors(bVerts[0], axis);
dist = (float)Math.Cos(angle) * bVerts[0].Length();
bMin = dist;
bMax = dist;
for (int v = 1; v < bVerts.Length; v++)
{
angle = angleBetweenVectors(bVerts[v], axis);
dist = (float)Math.Cos(angle) * bVerts[v].Length();
if (dist < bMin)
bMin = dist;
else if (dist > bMax)
bMax = dist;
}
return (aMin >= bMin && aMin <= bMax) || (aMax >= bMin && aMax <= bMax);
}