public static Matrix43 ScaleMatrix(float x, float y, float z) { Matrix43 m = new Matrix43(); float * p = (float *)&m; p[0] = x; p[5] = y; p[10] = z; return(m); }
public static Matrix43 TranslationMatrix(float x, float y, float z) { Matrix43 m = new Matrix43(); float * p = (float *)&m; p[3] = x; p[7] = y; p[11] = z; p[0] = p[5] = p[10] = 1.0f; return(m); }
public Matrix43 GetTranslation() { Matrix43 m = Identity; float * p = (float *)&m; fixed(float *s = _data) { p[3] = s[3]; p[7] = s[7]; p[11] = s[11]; } return(m); }
public static Matrix43 RotationMatrix(float x, float y, float z) { float cosx = (float)Math.Cos(x / 180.0f * Math.PI); float sinx = (float)Math.Sin(x / 180.0f * Math.PI); float cosy = (float)Math.Cos(y / 180.0f * Math.PI); float siny = (float)Math.Sin(y / 180.0f * Math.PI); float cosz = (float)Math.Cos(z / 180.0f * Math.PI); float sinz = (float)Math.Sin(z / 180.0f * Math.PI); Matrix43 m = Identity; float * p = (float *)&m; p[5] = cosx; p[6] = -sinx; p[9] = sinx; p[10] = cosx; Matrix43 m2 = Identity; float * p2 = (float *)&m2; p2[0] = cosy; p2[2] = siny; p2[8] = -siny; p2[10] = cosy; Matrix43 m3 = Identity; float * p3 = (float *)&m3; p3[0] = cosz; p3[1] = -sinz; p3[4] = sinz; p3[5] = cosz; m.Multiply(&m2); m.Multiply(&m3); //p[0] = cosy * cosz; //p[1] = cosy * sinz; //p[2] = -siny; //p[4] = (sinx * siny * cosz - cosx * sinz); //p[5] = (sinx * siny * sinz + cosx * cosz); //p[6] = sinx * cosy; //p[8] = (cosx * siny * cosz + sinx * sinz); //p[9] = (cosx * siny * sinz - sinx * cosz); //p[10] = cosx * cosy; return(m); }
public static Matrix43 RotationMatrixRX(float x) { Matrix43 m = new Matrix43(); float * p = (float *)&m; float cosx = (float)Math.Cos(x / 180.0f * Math.PI); float sinx = (float)Math.Sin(x / 180.0f * Math.PI); p[0] = 1.0f; p[5] = cosx; p[6] = sinx; p[9] = -sinx; p[10] = cosx; return(m); }
public static Matrix43 RotationMatrixRY(float y) { Matrix43 m = new Matrix43(); float * p = (float *)&m; float cosy = (float)Math.Cos(y / 180.0f * Math.PI); float siny = (float)Math.Sin(y / 180.0f * Math.PI); p[5] = 1.0f; p[0] = cosy; p[2] = -siny; p[8] = siny; p[10] = cosy; return(m); }
internal void Scale(float x, float y, float z) { Matrix43 m = ScaleMatrix(x, y, z); this.Multiply(&m); }
internal void Rotate(float x, float y, float z) { Matrix43 m = RotationMatrix(x, y, z); this.Multiply(&m); }
public void Translate(float x, float y, float z) { Matrix43 m = TranslationMatrix(x, y, z); Multiply(&m); }