public Matrix3 MulEqual(Matrix3 m) { if (m == null) { m = new Matrix3(); } Matrix3 result = new Matrix3(this.val); result.Mul(m); return(result); }
public static Matrix3 Avg(ICollection <Matrix3> Set) { Matrix3 average = new Matrix3(); average.Set(0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f); float hist = 0; foreach (Matrix3 matrix3d in Set) { if (matrix3d.IsFloatValid()) { average.Add(matrix3d); hist++; } } average.Mul(1f / hist); return(average); }
public static Matrix3 GetRotationMatrixExact(float ax, float ay, float az) { float cosax = MathUtils.Cos(MathUtils.ToRadians(ax)); float sinax = MathUtils.Sin(MathUtils.ToRadians(ax)); float cosay = MathUtils.Cos(MathUtils.ToRadians(ay)); float sinay = MathUtils.Sin(MathUtils.ToRadians(ay)); float cosaz = MathUtils.Cos(MathUtils.ToRadians(az)); float sinaz = MathUtils.Sin(MathUtils.ToRadians(az)); float[] tx = { 1, 0, 0, 0, cosax, -sinax, 0, sinax, cosax }; float[] ty = { cosay, 0, sinay, 0, 1f, 0f, -sinay, 0, cosay }; float[] tz = { cosaz, -sinaz, 0, sinaz, cosaz, 0, 0, 0, 1 }; Matrix3 Rx = new Matrix3(tx); Matrix3 Ry = new Matrix3(ty); Matrix3 Rz = new Matrix3(tz); Matrix3 result = new Matrix3(); Matrix3 tmpresult = new Matrix3(); Matrix3.Mul(tmpresult, Rx, Ry); Matrix3.Mul(result, tmpresult, Rz); return(result); }