/// <summary> /// Creates 4x4 affine transform matrix from linear transform /// matrix 3x3 /// </summary> /// <param name="lM">Linear transform matrix</param> public Float4x4(Float3x3 lM) : this(lM[0, 0], lM[0, 1], lM[0, 2], 0, lM[1, 0], lM[1, 1], lM[1, 2], 0, lM[2, 0], lM[2, 1], lM[2, 2], 0, 0, 0, 0, 1) { }
/// <summary> /// Creates 4x4 affine transform matrix from linear transform /// matrix 3x3 /// </summary> /// <param name="lM">Linear transform matrix</param> public Float4x4(Float3x3 lM) : this(lM[0, 0], lM[0, 1], lM[0, 2], 0, lM[1, 0], lM[1, 1], lM[1, 2], 0, lM[2, 0], lM[2, 1], lM[2, 2], 0, 0, 0, 0, 1 ) { }
public static Float3x3 getRotationMatrix(Float3 rotation) { float xAngle = rotation.x; float yAngle = rotation.y; float zAngle = rotation.z; xAngle *= ((float)Math.PI / 180.0f); yAngle *= ((float)Math.PI / 180.0f); zAngle *= ((float)Math.PI / 180.0f); Float3x3 aboutX = new Float3x3(1, 0, 0, 0, (float)Cos(xAngle), (float)Sin(xAngle), 0, (float)(-Sin(xAngle)), (float)Cos(xAngle)); Float3x3 aboutY = new Float3x3((float)Cos(yAngle), 0, (float)(-Sin(yAngle)), 0, 1, 0, (float)Sin(yAngle), 0, (float)Cos(yAngle)); return(aboutX * aboutY); }
public Float3 mul(Float3x3 m) { Float3[] columns = m.Columns; return(new Float3(this.dot(columns[0]), this.dot(columns[1]), this.dot(columns[2]))); }
public Float3 mul(Float3x3 m) { Float3[] columns = m.Columns; return new Float3(this.dot(columns[0]), this.dot(columns[1]), this.dot(columns[2])); }
public static Float3x3 getRotationMatrix(Float3 rotation) { float xAngle = rotation.x; float yAngle = rotation.y; float zAngle = rotation.z; xAngle *= ((float)Math.PI / 180.0f); yAngle *= ((float)Math.PI / 180.0f); zAngle *= ((float)Math.PI / 180.0f); Float3x3 aboutX = new Float3x3(1, 0, 0, 0, (float)Cos(xAngle), (float)Sin(xAngle), 0, (float)(-Sin(xAngle)), (float)Cos(xAngle)); Float3x3 aboutY = new Float3x3((float)Cos(yAngle), 0, (float)(-Sin(yAngle)), 0, 1, 0, (float)Sin(yAngle), 0, (float)Cos(yAngle)); return aboutX * aboutY; }