Ejemplo n.º 1
0
        public static bool CheckRotationMatrix(this Matrix3d R)
        {
            //test
            Matrix3d RT = R.Copy();

            RT.Transpose();
            RT = Matrix3d.Mult(R, RT);
            return(RT.CompareMatrices(Matrix3d.Identity, 1e-10f));
            //RT should be unit matrix
        }
Ejemplo n.º 2
0
        private void CheckSVD_NotNormalized(Matrix3d C)
        {
            //check transformation
            Matrix3d R = Matrix3d.Mult(U_NotNormalized, VT_NotNormalized);

            R = R.MultiplyDiagonalElements(EV_NotNormalized);
            //R should be now C
            R.CompareMatrices(C, 1e-2f);
            //PointCloud.Rotate(pointsSource, VT);
        }
Ejemplo n.º 3
0
        private void CheckSVD(Matrix3d C)
        {
            //check transformation
            Matrix3d R         = Matrix3d.Mult(U, VT);
            Matrix3d testRight = VT.MultiplyDiagonalElements(EV);
            //R should be now C
            Matrix3d testleft = Matrix3d.Mult(U, C);

            testleft = Matrix3d.Mult(testleft, VT);
            testRight.CompareMatrices(testleft, 1e-2f);
            //PointCloud.Rotate(pointsSource, VT);
        }
Ejemplo n.º 4
0
        private static void CheckSVD(Matrix3d H, double threshold)
        {
            //check : H = U * EV * VT

            Matrix3d EVMat = new Matrix3d();

            EVMat = EVMat.FromVector(EV);

            //check
            // EV * VT
            Matrix3d test = Matrix3d.Mult(EVMat, VT);

            // U * EV * VT
            test = Matrix3d.Mult(U, test);

            test.CompareMatrices(H, threshold);
        }