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