MultiCross() public static méthode

multiply cross two matrix
public static MultiCross ( Autodesk m1, Autodesk m2 ) : Autodesk.Revit.DB.XYZ[]
m1 Autodesk left matrix
m2 Autodesk right matrix
Résultat Autodesk.Revit.DB.XYZ[]
Exemple #1
0
        /// <summary>
        /// Add 2 Transform Matrix
        /// </summary>
        /// <param name="tran1"></param>
        /// <param name="tran2"></param>
        /// <returns></returns>
        private Transform AddTransform(Transform tran1, Transform tran2)
        {
            Autodesk.Revit.DB.XYZ xyz    = new Autodesk.Revit.DB.XYZ(0, 0, 0);
            Transform             result = Transform.CreateTranslation(xyz);

            result.Origin = MathUtil.AddXYZ(tran1.Origin, tran2.Origin);

            Autodesk.Revit.DB.XYZ[] left  = new Autodesk.Revit.DB.XYZ[3];
            Autodesk.Revit.DB.XYZ[] right = new Autodesk.Revit.DB.XYZ[3];

            for (int i = 0; i < 3; i++)
            {
                left[i]  = tran1.get_Basis(i);
                right[i] = tran2.get_Basis(i);
            }

            Autodesk.Revit.DB.XYZ[] temp = MathUtil.MultiCross(left, right);

            for (int i = 0; i < 3; i++)
            {
                result.set_Basis(i, temp[i]);
            }

            return(result);
        }
        /// <summary>
        /// rotate 3*3 matrix around X axis
        /// </summary>
        /// <param name="origin">matrix to rotate</param>
        /// <param name="angle"></param>
        private void RotateX(ref double[,] origin, double angle)
        {
            double sin = Math.Sin(angle);
            double cos = Math.Cos(angle);

            double[,] rotate = { { 1.0, 0.0, 0.0 }, { 0.0, cos, sin }, { 0.0, -sin, cos } };
            origin           = MathUtil.MultiCross(m_origin, rotate);
        }