public static Matrix34 CreateScale(Vector3 s, Vector3 t = default(Vector3)) { var matrix = new Matrix34(); matrix.SetScale(s, t); return(matrix); }
public static Matrix34 CreateTranslationMat(Vector3 v) { var matrix = new Matrix34(); matrix.SetTranslationMat(v); return(matrix); }
public static Matrix34 CreateRotationAA(float c, float s, Vector3 axis, Vector3 t = default(Vector3)) { var matrix = new Matrix34(); matrix.SetRotationAA(c, s, axis, t); return(matrix); }
public static Matrix34 CreateIdentity() { var matrix = new Matrix34(); matrix.SetIdentity(); return(matrix); }
public static Matrix34 CreateFromVectors(Vector3 vx, Vector3 vy, Vector3 vz, Vector3 pos) { var matrix = new Matrix34(); matrix.SetFromVectors(vx, vy, vz, pos); return(matrix); }
public Matrix33(Matrix34 m) { M00 = m.M00; M01 = m.M01; M02 = m.M02; M10 = m.M10; M11 = m.M11; M12 = m.M12; M20 = m.M20; M21 = m.M21; M22 = m.M22; }
public static Matrix34 operator *(Matrix34 l, Matrix34 r) { var m = new Matrix34(); m.M00 = l.M00 * r.M00 + l.M01 * r.M10 + l.M02 * r.M20; m.M10 = l.M10 * r.M00 + l.M11 * r.M10 + l.M12 * r.M20; m.M20 = l.M20 * r.M00 + l.M21 * r.M10 + l.M22 * r.M20; m.M01 = l.M00 * r.M01 + l.M01 * r.M11 + l.M02 * r.M21; m.M11 = l.M10 * r.M01 + l.M11 * r.M11 + l.M12 * r.M21; m.M21 = l.M20 * r.M01 + l.M21 * r.M11 + l.M22 * r.M21; m.M02 = l.M00 * r.M02 + l.M01 * r.M12 + l.M02 * r.M22; m.M12 = l.M10 * r.M02 + l.M11 * r.M12 + l.M12 * r.M22; m.M22 = l.M20 * r.M02 + l.M21 * r.M12 + l.M22 * r.M22; m.M03 = l.M00 * r.M03 + l.M01 * r.M13 + l.M02 * r.M23 + l.M03; m.M13 = l.M10 * r.M03 + l.M11 * r.M13 + l.M12 * r.M23 + l.M13; m.M23 = l.M20 * r.M03 + l.M21 * r.M13 + l.M22 * r.M23 + l.M23; return(m); }
public void SetScale(Vector3 s, Vector3 t = default(Vector3)) { this = new Matrix34(Matrix33.CreateScale(s)); SetTranslation(t); }
/*! * Create a rotation matrix around an arbitrary axis (Eulers Theorem). * The axis is specified as an normalized Vector3. The angle is assumed to be in radians. * This function also assumes a translation-vector and stores it in the right column. * * Example: * Matrix34 m34; * Vector3 axis=GetNormalized( Vector3(-1.0f,-0.3f,0.0f) ); * m34.SetRotationAA( 3.14314f, axis, Vector3(5,5,5) ); */ public void SetRotationAA(float c, float s, Vector3 axis, Vector3 t = default(Vector3)) { this = new Matrix34(Matrix33.CreateRotationAA(c, s, axis)); M03 = t.X; M13 = t.Y; M23 = t.Z; }
public bool IsEquivalent(Matrix34 m, float e = 0.05f) { return((Math.Abs(M00 - m.M00) <= e) && (Math.Abs(M01 - m.M01) <= e) && (Math.Abs(M02 - m.M02) <= e) && (Math.Abs(M03 - m.M03) <= e) && (Math.Abs(M10 - m.M10) <= e) && (Math.Abs(M11 - m.M11) <= e) && (Math.Abs(M12 - m.M12) <= e) && (Math.Abs(M13 - m.M13) <= e) && (Math.Abs(M20 - m.M20) <= e) && (Math.Abs(M21 - m.M21) <= e) && (Math.Abs(M22 - m.M22) <= e) && (Math.Abs(M23 - m.M23) <= e)); }