private static int GetExtremePoint(ref Vector3 direction, ref QuickList<Vector3> points, ref QuickList<int> outsidePoints) { float maximumDot = -float.MaxValue; int extremeIndex = 0; for (int i = 0; i < outsidePoints.Count; ++i) { float dot = Vector3.Dot(points.Elements[outsidePoints[i]], direction); if (dot > maximumDot) { maximumDot = dot; extremeIndex = i; } } return extremeIndex; }