Set() public method

public Set ( Mat3 rhs ) : void
rhs Mat3
return void
示例#1
0
文件: Mat3.cs 项目: z80/prototyping
        public Mat3 Transpose()
        {
            Mat3 m = new Mat3();

            m.Set(m00, m10, m20, m01, m11, m21, m02, m12, m22);
            return(m);
        }
示例#2
0
文件: SVD.cs 项目: Lin20/isosurface
        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);
            }
        }
示例#3
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);
            }
        }
示例#4
0
文件: Mat3.cs 项目: Lin20/isosurface
 public static Mat3 operator *(Mat3 a, Mat3 b)
 {
     Mat3 m = new Mat3();
     m.Set(a.m00 * b.m00 + a.m01 * b.m10 + a.m02 * b.m20,
         a.m00 * b.m01 + a.m01 * b.m11 + a.m02 * b.m21,
         a.m00 * b.m02 + a.m01 * b.m12 + a.m02 * b.m22,
         a.m10 * b.m00 + a.m11 * b.m10 + a.m12 * b.m20,
         a.m10 * b.m01 + a.m11 * b.m11 + a.m12 * b.m21,
         a.m10 * b.m02 + a.m11 * b.m12 + a.m12 * b.m22,
         a.m20 * b.m00 + a.m21 * b.m10 + a.m22 * b.m20,
         a.m20 * b.m01 + a.m21 * b.m11 + a.m22 * b.m21,
         a.m20 * b.m02 + a.m21 * b.m12 + a.m22 * b.m22);
     return m;
 }
示例#5
0
文件: Mat3.cs 项目: z80/prototyping
        public static Mat3 operator *(Mat3 a, Mat3 b)
        {
            Mat3 m = new Mat3();

            m.Set(a.m00 * b.m00 + a.m01 * b.m10 + a.m02 * b.m20,
                  a.m00 * b.m01 + a.m01 * b.m11 + a.m02 * b.m21,
                  a.m00 * b.m02 + a.m01 * b.m12 + a.m02 * b.m22,
                  a.m10 * b.m00 + a.m11 * b.m10 + a.m12 * b.m20,
                  a.m10 * b.m01 + a.m11 * b.m11 + a.m12 * b.m21,
                  a.m10 * b.m02 + a.m11 * b.m12 + a.m12 * b.m22,
                  a.m20 * b.m00 + a.m21 * b.m10 + a.m22 * b.m20,
                  a.m20 * b.m01 + a.m21 * b.m11 + a.m22 * b.m21,
                  a.m20 * b.m02 + a.m21 * b.m12 + a.m22 * b.m22);
            return(m);
        }
示例#6
0
文件: SVD.cs 项目: Lin20/isosurface
        public static Mat3 PseudoInverse(SMat3 d, Mat3 v, float tol)
        {
            Mat3 m = new Mat3();
            float d0 = Pinv(d.m00, tol), d1 = Pinv(d.m11, tol), d2 = Pinv(d.m22,
                        tol);
            m.Set(v.m00 * d0 * v.m00 + v.m01 * d1 * v.m01 + v.m02 * d2 * v.m02,
                    v.m00 * d0 * v.m10 + v.m01 * d1 * v.m11 + v.m02 * d2 * v.m12,
                    v.m00 * d0 * v.m20 + v.m01 * d1 * v.m21 + v.m02 * d2 * v.m22,
                    v.m10 * d0 * v.m00 + v.m11 * d1 * v.m01 + v.m12 * d2 * v.m02,
                    v.m10 * d0 * v.m10 + v.m11 * d1 * v.m11 + v.m12 * d2 * v.m12,
                    v.m10 * d0 * v.m20 + v.m11 * d1 * v.m21 + v.m12 * d2 * v.m22,
                    v.m20 * d0 * v.m00 + v.m21 * d1 * v.m01 + v.m22 * d2 * v.m02,
                    v.m20 * d0 * v.m10 + v.m21 * d1 * v.m11 + v.m22 * d2 * v.m12,
                    v.m20 * d0 * v.m20 + v.m21 * d1 * v.m21 + v.m22 * d2 * v.m22);

            return m;
        }
示例#7
0
        public static Mat3 PseudoInverse(SMat3 d, Mat3 v, float tol)
        {
            Mat3  m = new Mat3();
            float d0 = Pinv(d.m00, tol), d1 = Pinv(d.m11, tol), d2 = Pinv(d.m22,
                                                                          tol);

            m.Set(v.m00 * d0 * v.m00 + v.m01 * d1 * v.m01 + v.m02 * d2 * v.m02,
                  v.m00 * d0 * v.m10 + v.m01 * d1 * v.m11 + v.m02 * d2 * v.m12,
                  v.m00 * d0 * v.m20 + v.m01 * d1 * v.m21 + v.m02 * d2 * v.m22,
                  v.m10 * d0 * v.m00 + v.m11 * d1 * v.m01 + v.m12 * d2 * v.m02,
                  v.m10 * d0 * v.m10 + v.m11 * d1 * v.m11 + v.m12 * d2 * v.m12,
                  v.m10 * d0 * v.m20 + v.m11 * d1 * v.m21 + v.m12 * d2 * v.m22,
                  v.m20 * d0 * v.m00 + v.m21 * d1 * v.m01 + v.m22 * d2 * v.m02,
                  v.m20 * d0 * v.m10 + v.m21 * d1 * v.m11 + v.m22 * d2 * v.m12,
                  v.m20 * d0 * v.m20 + v.m21 * d1 * v.m21 + v.m22 * d2 * v.m22);

            return(m);
        }
示例#8
0
文件: Mat3.cs 项目: Lin20/isosurface
 public Mat3 Transpose()
 {
     Mat3 m = new Mat3();
     m.Set(m00, m10, m20, m01, m11, m21, m02, m12, m22);
     return m;
 }