Example #1
0
 public Matrix3(Matrix3 matrix)
 {
     m00_ = matrix.m00_;
     m01_ = matrix.m01_;
     m02_ = matrix.m02_;
     m10_ = matrix.m10_;
     m11_ = matrix.m11_;
     m12_ = matrix.m12_;
     m20_ = matrix.m20_;
     m21_ = matrix.m21_;
     m22_ = matrix.m22_;
 }
Example #2
0
 /// Copy-construct from a 3x3 matrix and set the extra elements to identity.
 public Matrix3x4(Matrix3 matrix)
 {
     m00_ = matrix.m00_;
     m01_ = matrix.m01_;
     m02_ = matrix.m02_;
     m03_ = 0.0f;
     m10_ = matrix.m10_;
     m11_ = matrix.m11_;
     m12_ = matrix.m12_;
     m13_ = 0.0f;
     m20_ = matrix.m20_;
     m21_ = matrix.m21_;
     m22_ = matrix.m22_;
     m23_ = 0.0f;
 }
Example #3
0
 public Matrix3 Set(Matrix3 rhs)
 {
     m00_ = rhs.m00_;
     m01_ = rhs.m01_;
     m02_ = rhs.m02_;
     m10_ = rhs.m10_;
     m11_ = rhs.m11_;
     m12_ = rhs.m12_;
     m20_ = rhs.m20_;
     m21_ = rhs.m21_;
     m22_ = rhs.m22_;
     return this;
 }
Example #4
0
 /// Test for equality with another matrix with epsilon.
 public bool Equals(Matrix3 rhs)
 {
     return true;
 }
Example #5
0
 /// Construct from a rotation matrix.
 public Quaternion(Matrix3 matrix)
 {
     FromRotationMatrix(matrix);
 }
Example #6
0
        /// Define from a rotation matrix.
        public void FromRotationMatrix(Matrix3 matrix)
        {
            float t = matrix.m00_ + matrix.m11_ + matrix.m22_;

            if (t > 0.0f)
            {
                float invS = 0.5f / (float)Math.Sqrt(1.0f + t);

                x_ = (matrix.m21_ - matrix.m12_) * invS;
                y_ = (matrix.m02_ - matrix.m20_) * invS;
                z_ = (matrix.m10_ - matrix.m01_) * invS;
                w_ = 0.25f / invS;
            }
            else
            {
                if (matrix.m00_ > matrix.m11_ && matrix.m00_ > matrix.m22_)
                {
                    float invS = 0.5f / (float)Math.Sqrt(1.0f + matrix.m00_ - matrix.m11_ - matrix.m22_);

                    x_ = 0.25f / invS;
                    y_ = (matrix.m01_ + matrix.m10_) * invS;
                    z_ = (matrix.m20_ + matrix.m02_) * invS;
                    w_ = (matrix.m21_ - matrix.m12_) * invS;
                }
                else if (matrix.m11_ > matrix.m22_)
                {
                    float invS = 0.5f / (float)Math.Sqrt(1.0f + matrix.m11_ - matrix.m00_ - matrix.m22_);

                    x_ = (matrix.m01_ + matrix.m10_) * invS;
                    y_ = 0.25f / invS;
                    z_ = (matrix.m12_ + matrix.m21_) * invS;
                    w_ = (matrix.m02_ - matrix.m20_) * invS;
                }
                else
                {
                    float invS = 0.5f / (float)Math.Sqrt(1.0f + matrix.m22_ - matrix.m00_ - matrix.m11_);

                    x_ = (matrix.m02_ + matrix.m20_) * invS;
                    y_ = (matrix.m12_ + matrix.m21_) * invS;
                    z_ = 0.25f / invS;
                    w_ = (matrix.m10_ - matrix.m01_) * invS;
                }
            }
        }
Example #7
0
        /// Define from orthonormal axes.
        public void FromAxes(Vector3 xAxis, Vector3 yAxis, Vector3 zAxis)
        {
            Matrix3 matrix = new Matrix3(
                xAxis.x, yAxis.x, zAxis.x,
                xAxis.y, yAxis.y, zAxis.y,
                xAxis.z, yAxis.z, zAxis.z
            );

            FromRotationMatrix(matrix);
        }
Example #8
0
 /// Set rotation elements from a 3x3 matrix.
 public void SetRotation(Matrix3 rotation)
 {
     m00_ = rotation.m00_;
     m01_ = rotation.m01_;
     m02_ = rotation.m02_;
     m10_ = rotation.m10_;
     m11_ = rotation.m11_;
     m12_ = rotation.m12_;
     m20_ = rotation.m20_;
     m21_ = rotation.m21_;
     m22_ = rotation.m22_;
 }
Example #9
0
 /// Assign from a 3x3 matrix and set the extra elements to identity.
 public Matrix3x4 Set(Matrix3 rhs)
 {
     m00_ = rhs.m00_;
     m01_ = rhs.m01_;
     m02_ = rhs.m02_;
     m03_ = 0.0f;
     m10_ = rhs.m10_;
     m11_ = rhs.m11_;
     m12_ = rhs.m12_;
     m13_ = 0.0f;
     m20_ = rhs.m20_;
     m21_ = rhs.m21_;
     m22_ = rhs.m22_;
     m23_ = 0.0f;
     return this;
 }
Example #10
0
 /// Assign from a 3x3 matrix. Set the extra elements to identity.
 public void Set(Matrix3 rhs)
 {
     m00_ = rhs.m00_;
     m01_ = rhs.m01_;
     m02_ = rhs.m02_;
     m03_ = 0.0f;
     m10_ = rhs.m10_;
     m11_ = rhs.m11_;
     m12_ = rhs.m12_;
     m13_ = 0.0f;
     m20_ = rhs.m20_;
     m21_ = rhs.m21_;
     m22_ = rhs.m22_;
     m23_ = 0.0f;
     m30_ = 0.0f;
     m31_ = 0.0f;
     m32_ = 0.0f;
     m33_ = 1.0f;
 }
 /// Construct from a rotation matrix.
 public Quaternion(Matrix3 matrix)
 {
     FromRotationMatrix(matrix);
 }