CrossToOutUnsafe() public static method

public static CrossToOutUnsafe ( Vec3 a, Vec3 b, Vec3 result ) : void
a Vec3
b Vec3
result Vec3
return void
Beispiel #1
0
        /// <summary>
        /// Solve A * x = b, where b is a column vector. This is more efficient than computing the inverse
        /// in one-shot cases.
        /// </summary>
        /// <param name="b"></param>
        /// <param name="result">the result</param>
        public void Solve33ToOut(Vec3 b, Vec3 result)
        {
            Debug.Assert(b != result);
            Vec3.CrossToOutUnsafe(Ey, Ez, result);
            float det = Vec3.Dot(Ex, result);

            if (det != 0.0f)
            {
                det = 1.0f / det;
            }
            Vec3.CrossToOutUnsafe(Ey, Ez, result);
            float x = det * Vec3.Dot(b, result);

            Vec3.CrossToOutUnsafe(b, Ez, result);
            float y = det * Vec3.Dot(Ex, result);

            Vec3.CrossToOutUnsafe(Ey, b, result);
            float z = det * Vec3.Dot(Ex, result);

            result.X = x;
            result.Y = y;
            result.Z = z;
        }