Ejemplo n.º 1
0
 /// <summary>
 /// Constructs this matrix from a dmat3. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public dmat2(dmat3 m)
 {
     this.m00 = m.m00;
     this.m01 = m.m01;
     this.m10 = m.m10;
     this.m11 = m.m11;
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Constructs this matrix from a dmat3. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public dmat3x2(dmat3 m)
 {
     this.m00 = m.m00;
     this.m01 = m.m01;
     this.m10 = m.m10;
     this.m11 = m.m11;
     this.m20 = m.m20;
     this.m21 = m.m21;
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Constructs this matrix from a dmat3. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public dmat2x3(dmat3 m)
 {
     this.m00 = m.m00;
     this.m01 = m.m01;
     this.m02 = m.m02;
     this.m10 = m.m10;
     this.m11 = m.m11;
     this.m12 = m.m12;
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Constructs this matrix from a dmat3. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public dmat2x4(dmat3 m)
 {
     this.m00 = m.m00;
     this.m01 = m.m01;
     this.m02 = m.m02;
     this.m03 = 0.0;
     this.m10 = m.m10;
     this.m11 = m.m11;
     this.m12 = m.m12;
     this.m13 = 0.0;
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Constructs this matrix from a dmat3. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public dmat4x2(dmat3 m)
 {
     this.m00 = m.m00;
     this.m01 = m.m01;
     this.m10 = m.m10;
     this.m11 = m.m11;
     this.m20 = m.m20;
     this.m21 = m.m21;
     this.m30 = 0.0;
     this.m31 = 0.0;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Constructs this matrix from a dmat3. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public dmat3(dmat3 m)
 {
     this.m00 = m.m00;
     this.m01 = m.m01;
     this.m02 = m.m02;
     this.m10 = m.m10;
     this.m11 = m.m11;
     this.m12 = m.m12;
     this.m20 = m.m20;
     this.m21 = m.m21;
     this.m22 = m.m22;
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Constructs this matrix from a dmat3. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public dmat4x3(dmat3 m)
 {
     this.m00 = m.m00;
     this.m01 = m.m01;
     this.m02 = m.m02;
     this.m10 = m.m10;
     this.m11 = m.m11;
     this.m12 = m.m12;
     this.m20 = m.m20;
     this.m21 = m.m21;
     this.m22 = m.m22;
     this.m30 = 0.0;
     this.m31 = 0.0;
     this.m32 = 0.0;
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Constructs this matrix from a dmat3. Non-overwritten fields are from an Identity matrix.
 /// </summary>
 public dmat3x4(dmat3 m)
 {
     this.m00 = m.m00;
     this.m01 = m.m01;
     this.m02 = m.m02;
     this.m03 = 0.0;
     this.m10 = m.m10;
     this.m11 = m.m11;
     this.m12 = m.m12;
     this.m13 = 0.0;
     this.m20 = m.m20;
     this.m21 = m.m21;
     this.m22 = m.m22;
     this.m23 = 0.0;
 }
Ejemplo n.º 9
0
        /// <summary>
        /// Creates a quaternion from the rotational part of a dmat4.
        /// </summary>
        public static dquat FromMat3(dmat3 m)
        {
            var fourXSquaredMinus1       = m.m00 - m.m11 - m.m22;
            var fourYSquaredMinus1       = m.m11 - m.m00 - m.m22;
            var fourZSquaredMinus1       = m.m22 - m.m00 - m.m11;
            var fourWSquaredMinus1       = m.m00 + m.m11 + m.m22;
            var biggestIndex             = 0;
            var fourBiggestSquaredMinus1 = fourWSquaredMinus1;

            if (fourXSquaredMinus1 > fourBiggestSquaredMinus1)
            {
                fourBiggestSquaredMinus1 = fourXSquaredMinus1;
                biggestIndex             = 1;
            }
            if (fourYSquaredMinus1 > fourBiggestSquaredMinus1)
            {
                fourBiggestSquaredMinus1 = fourYSquaredMinus1;
                biggestIndex             = 2;
            }
            if (fourZSquaredMinus1 > fourBiggestSquaredMinus1)
            {
                fourBiggestSquaredMinus1 = fourZSquaredMinus1;
                biggestIndex             = 3;
            }
            var biggestVal = Math.Sqrt((double)fourBiggestSquaredMinus1 + 1.0) * 0.5;
            var mult       = 0.25 / biggestVal;

            switch (biggestIndex)
            {
            case 0: return(new dquat((double)((double)(m.m12 - m.m21) * mult), (double)((double)(m.m20 - m.m02) * mult), (double)((double)(m.m01 - m.m10) * mult), (double)(biggestVal)));

            case 1: return(new dquat((double)(biggestVal), (double)((double)(m.m01 + m.m10) * mult), (double)((double)(m.m20 + m.m02) * mult), (double)((double)(m.m12 - m.m21) * mult)));

            case 2: return(new dquat((double)((double)(m.m01 + m.m10) * mult), (double)(biggestVal), (double)((double)(m.m12 + m.m21) * mult), (double)((double)(m.m20 - m.m02) * mult)));

            default: return(new dquat((double)((double)(m.m20 + m.m02) * mult), (double)((double)(m.m12 + m.m21) * mult), (double)(biggestVal), (double)((double)(m.m01 - m.m10) * mult)));
            }
        }
Ejemplo n.º 10
0
 /// <summary>
 /// Creates a quaternion from the rotational part of a dmat3.
 /// </summary>
 public dquat(dmat3 m)
     : this(FromMat3(m))
 {
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Creates a 2D array with all values (address: Values[x, y])
 /// </summary>
 public static double[,] Values(dmat3 m) => m.Values;
Ejemplo n.º 12
0
 /// <summary>
 /// Creates a 1D array with all values (internal order)
 /// </summary>
 public static double[] Values1D(dmat3 m) => m.Values1D;
Ejemplo n.º 13
0
 /// <summary>
 /// Executes a component-wise - (subtract).
 /// </summary>
 public static dmat3 CompSub(dmat3 A, dmat3 B) => new dmat3(A.m00 - B.m00, A.m01 - B.m01, A.m02 - B.m02, A.m10 - B.m10, A.m11 - B.m11, A.m12 - B.m12, A.m20 - B.m20, A.m21 - B.m21, A.m22 - B.m22);
Ejemplo n.º 14
0
 /// <summary>
 /// Executes a component-wise + (add).
 /// </summary>
 public static dmat3 CompAdd(dmat3 A, dmat3 B) => new dmat3(A.m00 + B.m00, A.m01 + B.m01, A.m02 + B.m02, A.m10 + B.m10, A.m11 + B.m11, A.m12 + B.m12, A.m20 + B.m20, A.m21 + B.m21, A.m22 + B.m22);
Ejemplo n.º 15
0
 /// <summary>
 /// Executes a component-wise / (divide).
 /// </summary>
 public static dmat3 CompDiv(dmat3 A, dmat3 B) => new dmat3(A.m00 / B.m00, A.m01 / B.m01, A.m02 / B.m02, A.m10 / B.m10, A.m11 / B.m11, A.m12 / B.m12, A.m20 / B.m20, A.m21 / B.m21, A.m22 / B.m22);
Ejemplo n.º 16
0
 /// <summary>
 /// Executes a component-wise * (multiply).
 /// </summary>
 public static dmat3 CompMul(dmat3 A, dmat3 B) => new dmat3(A.m00 * B.m00, A.m01 * B.m01, A.m02 * B.m02, A.m10 * B.m10, A.m11 * B.m11, A.m12 * B.m12, A.m20 * B.m20, A.m21 * B.m21, A.m22 * B.m22);
Ejemplo n.º 17
0
 /// <summary>
 /// Returns true iff this equals rhs component-wise.
 /// </summary>
 public bool Equals(dmat3 rhs) => ((((m00.Equals(rhs.m00) && m01.Equals(rhs.m01)) && m02.Equals(rhs.m02)) && (m10.Equals(rhs.m10) && m11.Equals(rhs.m11))) && ((m12.Equals(rhs.m12) && m20.Equals(rhs.m20)) && (m21.Equals(rhs.m21) && m22.Equals(rhs.m22))));
Ejemplo n.º 18
0
 /// <summary>
 /// Creates a quaternion from the rotational part of this matrix.
 /// </summary>
 public static dquat ToQuaternion(dmat3 m) => m.ToQuaternion;
Ejemplo n.º 19
0
 /// <summary>
 /// Returns an enumerator that iterates through all fields.
 /// </summary>
 public static IEnumerator <double> GetEnumerator(dmat3 m) => m.GetEnumerator();