internal static bool CircleBoxTest(ref CircleShape A, ref JVector PA, ref BoxShape B, ref JVector PB, ref JMatrix OB) { // find vertex closest to circles center // move circle into boxes space var pa = JVector.TransposedTransform(PA - PB, OB); // find normal from box to circles center var axis = pa; JVector closestVertex; // find closest vertex B.SupportMapping(ref axis, out closestVertex); // do a SAT test on that axis // axis to test JVector T = pa - closestVertex; float TL = Math.Abs(T * axis); float a = Math.Abs(pa * axis); float b = Math.Abs(closestVertex * axis); if (TL > (a + b + A.Radius)) { return(false); } return(true); }