Example #1
0
 public static bool hasUncountable(FMatrix6x6 a)
 {
     if (UtilEjml.isUncountable(a.a11 + a.a12 + a.a13 + a.a14 + a.a15 + a.a16))
     {
         return(true);
     }
     if (UtilEjml.isUncountable(a.a21 + a.a22 + a.a23 + a.a24 + a.a25 + a.a26))
     {
         return(true);
     }
     if (UtilEjml.isUncountable(a.a31 + a.a32 + a.a33 + a.a34 + a.a35 + a.a36))
     {
         return(true);
     }
     if (UtilEjml.isUncountable(a.a41 + a.a42 + a.a43 + a.a44 + a.a45 + a.a46))
     {
         return(true);
     }
     if (UtilEjml.isUncountable(a.a51 + a.a52 + a.a53 + a.a54 + a.a55 + a.a56))
     {
         return(true);
     }
     if (UtilEjml.isUncountable(a.a61 + a.a62 + a.a63 + a.a64 + a.a65 + a.a66))
     {
         return(true);
     }
     return(false);
 }
Example #2
0
        public static float normF(FMatrix6x6 M)
        {
            float scale = CommonOps_FDF6.elementMaxAbs(M);

            if (scale == 0.0f)
            {
                return(0.0f);
            }

            float a11 = M.a11 / scale,
                  a12 = M.a12 / scale,
                  a13 = M.a13 / scale,
                  a14 = M.a14 / scale,
                  a15 = M.a15 / scale,
                  a16 = M.a16 / scale;
            float a21 = M.a21 / scale,
                  a22 = M.a22 / scale,
                  a23 = M.a23 / scale,
                  a24 = M.a24 / scale,
                  a25 = M.a25 / scale,
                  a26 = M.a26 / scale;
            float a31 = M.a31 / scale,
                  a32 = M.a32 / scale,
                  a33 = M.a33 / scale,
                  a34 = M.a34 / scale,
                  a35 = M.a35 / scale,
                  a36 = M.a36 / scale;
            float a41 = M.a41 / scale,
                  a42 = M.a42 / scale,
                  a43 = M.a43 / scale,
                  a44 = M.a44 / scale,
                  a45 = M.a45 / scale,
                  a46 = M.a46 / scale;
            float a51 = M.a51 / scale,
                  a52 = M.a52 / scale,
                  a53 = M.a53 / scale,
                  a54 = M.a54 / scale,
                  a55 = M.a55 / scale,
                  a56 = M.a56 / scale;
            float a61 = M.a61 / scale,
                  a62 = M.a62 / scale,
                  a63 = M.a63 / scale,
                  a64 = M.a64 / scale,
                  a65 = M.a65 / scale,
                  a66 = M.a66 / scale;

            float sum = 0;

            sum += a11 * a11 + a12 * a12 + a13 * a13 + a14 * a14 + a15 * a15 + a16 * a16;
            sum += a21 * a21 + a22 * a22 + a23 * a23 + a24 * a24 + a25 * a25 + a26 * a26;
            sum += a31 * a31 + a32 * a32 + a33 * a33 + a34 * a34 + a35 * a35 + a36 * a36;
            sum += a41 * a41 + a42 * a42 + a43 * a43 + a44 * a44 + a45 * a45 + a46 * a46;
            sum += a51 * a51 + a52 * a52 + a53 * a53 + a54 * a54 + a55 * a55 + a56 * a56;
            sum += a61 * a61 + a62 * a62 + a63 * a63 + a64 * a64 + a65 * a65 + a66 * a66;

            return(scale * (float)Math.Sqrt(sum));
        }
        /**
         * Converts {@link FMatrixRMaj} into {@link FMatrix6x6}
         *
         * @param input Input matrix.
         * @param output Output matrix.  If null a new matrix will be declared.
         * @return Converted matrix.
         */
        public static FMatrix6x6 convert(FMatrixRMaj input, FMatrix6x6 output)
        {
            if (output == null)
            {
                output = new FMatrix6x6();
            }

            if (input.getNumRows() != output.getNumRows())
            {
                throw new ArgumentException("Number of rows do not match");
            }
            if (input.getNumCols() != output.getNumCols())
            {
                throw new ArgumentException("Number of columns do not match");
            }

            output.a11 = input.data[0];
            output.a12 = input.data[1];
            output.a13 = input.data[2];
            output.a14 = input.data[3];
            output.a15 = input.data[4];
            output.a16 = input.data[5];
            output.a21 = input.data[6];
            output.a22 = input.data[7];
            output.a23 = input.data[8];
            output.a24 = input.data[9];
            output.a25 = input.data[10];
            output.a26 = input.data[11];
            output.a31 = input.data[12];
            output.a32 = input.data[13];
            output.a33 = input.data[14];
            output.a34 = input.data[15];
            output.a35 = input.data[16];
            output.a36 = input.data[17];
            output.a41 = input.data[18];
            output.a42 = input.data[19];
            output.a43 = input.data[20];
            output.a44 = input.data[21];
            output.a45 = input.data[22];
            output.a46 = input.data[23];
            output.a51 = input.data[24];
            output.a52 = input.data[25];
            output.a53 = input.data[26];
            output.a54 = input.data[27];
            output.a55 = input.data[28];
            output.a56 = input.data[29];
            output.a61 = input.data[30];
            output.a62 = input.data[31];
            output.a63 = input.data[32];
            output.a64 = input.data[33];
            output.a65 = input.data[34];
            output.a66 = input.data[35];

            return(output);
        }
        /**
         * Converts {@link FMatrix6x6} into {@link FMatrixRMaj}.
         *
         * @param input Input matrix.
         * @param output Output matrix.  If null a new matrix will be declared.
         * @return Converted matrix.
         */
        public static FMatrixRMaj convert(FMatrix6x6 input, FMatrixRMaj output)
        {
            if (output == null)
            {
                output = new FMatrixRMaj(6, 6);
            }

            if (input.getNumRows() != output.getNumRows())
            {
                throw new ArgumentException("Number of rows do not match");
            }
            if (input.getNumCols() != output.getNumCols())
            {
                throw new ArgumentException("Number of columns do not match");
            }

            output.data[0]  = input.a11;
            output.data[1]  = input.a12;
            output.data[2]  = input.a13;
            output.data[3]  = input.a14;
            output.data[4]  = input.a15;
            output.data[5]  = input.a16;
            output.data[6]  = input.a21;
            output.data[7]  = input.a22;
            output.data[8]  = input.a23;
            output.data[9]  = input.a24;
            output.data[10] = input.a25;
            output.data[11] = input.a26;
            output.data[12] = input.a31;
            output.data[13] = input.a32;
            output.data[14] = input.a33;
            output.data[15] = input.a34;
            output.data[16] = input.a35;
            output.data[17] = input.a36;
            output.data[18] = input.a41;
            output.data[19] = input.a42;
            output.data[20] = input.a43;
            output.data[21] = input.a44;
            output.data[22] = input.a45;
            output.data[23] = input.a46;
            output.data[24] = input.a51;
            output.data[25] = input.a52;
            output.data[26] = input.a53;
            output.data[27] = input.a54;
            output.data[28] = input.a55;
            output.data[29] = input.a56;
            output.data[30] = input.a61;
            output.data[31] = input.a62;
            output.data[32] = input.a63;
            output.data[33] = input.a64;
            output.data[34] = input.a65;
            output.data[35] = input.a66;

            return(output);
        }
Example #5
0
        public static float fastNormF(FMatrix6x6 M)
        {
            float sum = 0;

            sum += M.a11 * M.a11 + M.a12 * M.a12 + M.a13 * M.a13 + M.a14 * M.a14 + M.a15 * M.a15 + M.a16 * M.a16;
            sum += M.a21 * M.a21 + M.a22 * M.a22 + M.a23 * M.a23 + M.a24 * M.a24 + M.a25 * M.a25 + M.a26 * M.a26;
            sum += M.a31 * M.a31 + M.a32 * M.a32 + M.a33 * M.a33 + M.a34 * M.a34 + M.a35 * M.a35 + M.a36 * M.a36;
            sum += M.a41 * M.a41 + M.a42 * M.a42 + M.a43 * M.a43 + M.a44 * M.a44 + M.a45 * M.a45 + M.a46 * M.a46;
            sum += M.a51 * M.a51 + M.a52 * M.a52 + M.a53 * M.a53 + M.a54 * M.a54 + M.a55 * M.a55 + M.a56 * M.a56;
            sum += M.a61 * M.a61 + M.a62 * M.a62 + M.a63 * M.a63 + M.a64 * M.a64 + M.a65 * M.a65 + M.a66 * M.a66;

            return((float)Math.Sqrt(sum));
        }
Example #6
0
        public static void normalizeF(FMatrix6x6 M)
        {
            float val = normF(M);

            CommonOps_FDF6.divide(M, val);
        }
Example #7
0
 public static bool isIdentical(FMatrix6x6 a, FMatrix6x6 b, float tol)
 {
     if (!MatrixFeatures_FDRM.isIdentical(a.a11, b.a11, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a12, b.a12, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a13, b.a13, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a14, b.a14, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a15, b.a15, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a16, b.a16, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a21, b.a21, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a22, b.a22, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a23, b.a23, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a24, b.a24, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a25, b.a25, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a26, b.a26, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a31, b.a31, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a32, b.a32, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a33, b.a33, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a34, b.a34, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a35, b.a35, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a36, b.a36, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a41, b.a41, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a42, b.a42, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a43, b.a43, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a44, b.a44, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a45, b.a45, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a46, b.a46, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a51, b.a51, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a52, b.a52, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a53, b.a53, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a54, b.a54, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a55, b.a55, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a56, b.a56, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a61, b.a61, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a62, b.a62, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a63, b.a63, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a64, b.a64, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a65, b.a65, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_FDRM.isIdentical(a.a66, b.a66, tol))
     {
         return(false);
     }
     return(true);
 }