Exemplo n.º 1
0
        public static MNLA.Vector <float> CrossProduct(this MNLA.Vector <float> left, MNLA.Vector <float> right, bool normalize = true)
        {
            if ((left.Count != 3 || right.Count != 3))
            {
                throw new Exception("Vectors must have a length of 3.");
            }

            MNLA.Vector <float> result = MNLA.Vector <float> .Build.Dense(3);

            result[0] = left[1] * right[2] - left[2] * right[1];
            result[1] = -left[0] * right[2] + left[2] * right[0];
            result[2] = left[0] * right[1] - left[1] * right[0];

            if (normalize)
            {
                result = result.Normalize(2);
            }

            return(result);
        }