SetSymmetric() public method

public SetSymmetric ( SMat3 rhs ) : void
rhs SMat3
return void
Example #1
0
 public SMat3 Mul_ata(Mat3 a)
 {
     SMat3 m = new SMat3();
     m.SetSymmetric(a.m00 * a.m00 + a.m10 * a.m10 + a.m20 * a.m20,
                      a.m00 * a.m01 + a.m10 * a.m11 + a.m20 * a.m21,
                      a.m00 * a.m02 + a.m10 * a.m12 + a.m20 * a.m22,
                      a.m01 * a.m01 + a.m11 * a.m11 + a.m21 * a.m21,
                      a.m01 * a.m02 + a.m11 * a.m12 + a.m21 * a.m22,
                      a.m02 * a.m02 + a.m12 * a.m12 + a.m22 * a.m22);
     return m;
 }
Example #2
0
        public SMat3 Mul_ata(Mat3 a)
        {
            SMat3 m = new SMat3();

            m.SetSymmetric(a.m00 * a.m00 + a.m10 * a.m10 + a.m20 * a.m20,
                           a.m00 * a.m01 + a.m10 * a.m11 + a.m20 * a.m21,
                           a.m00 * a.m02 + a.m10 * a.m12 + a.m20 * a.m22,
                           a.m01 * a.m01 + a.m11 * a.m11 + a.m21 * a.m21,
                           a.m01 * a.m02 + a.m11 * a.m12 + a.m21 * a.m22,
                           a.m02 * a.m02 + a.m12 * a.m12 + a.m22 * a.m22);
            return(m);
        }
Example #3
0
        public SMat3 MulATA()
        {
            SMat3 m = new SMat3();

            m.SetSymmetric(m00 * m00 + m10 * m10 + m20 * m20,
                           m00 * m01 + m10 * m11 + m20 * m21,
                           m00 * m02 + m10 * m12 + m20 * m22,
                           m01 * m01 + m11 * m11 + m21 * m21,
                           m01 * m02 + m11 * m12 + m21 * m22,
                           m02 * m02 + m12 * m12 + m22 * m22);
            return(m);
        }
Example #4
0
        public static void GetSymmetricSvd(ref SMat3 a, ref SMat3 vtav, ref Mat3 v, float tol, int max_sweeps)
        {
            vtav.SetSymmetric(a);
            v.Set(1, 0, 0, 0, 1, 0, 0, 0, 1);
            float delta = tol * vtav.Fnorm();

            for (int i = 0; i < max_sweeps && vtav.Off() > delta; i++)
            {
                Rotate01(ref vtav, ref v);
                Rotate02(ref vtav, ref v);
                Rotate12(ref vtav, ref v);
            }
        }
Example #5
0
        public static void GetSymmetricSvd(ref SMat3 a, ref SMat3 vtav, ref Mat3 v, float tol, int max_sweeps)
        {
            vtav.SetSymmetric(a);
            v.Set(1, 0, 0, 0, 1, 0, 0, 0, 1);
            float delta = tol * vtav.Fnorm();

            for (int i = 0; i < max_sweeps && vtav.Off() > delta; i++)
            {
                Rotate01(ref vtav, ref v);
                Rotate02(ref vtav, ref v);
                Rotate12(ref vtav, ref v);
            }
        }
Example #6
0
 public SMat3 MulATA()
 {
     SMat3 m = new SMat3();
     m.SetSymmetric(m00 * m00 + m10 * m10 + m20 * m20,
                  m00 * m01 + m10 * m11 + m20 * m21,
                  m00 * m02 + m10 * m12 + m20 * m22,
                  m01 * m01 + m11 * m11 + m21 * m21,
                  m01 * m02 + m11 * m12 + m21 * m22,
                  m02 * m02 + m12 * m12 + m22 * m22);
     return m;
 }
Example #7
0
 private void SetAta()
 {
     ata.SetSymmetric(this.data.ata_00, this.data.ata_01,
                      this.data.ata_02, this.data.ata_11, this.data.ata_12,
                      this.data.ata_22);
 }