Пример #1
0
        public Matrix3 MulEqual(Matrix3 m)
        {
            if (m == null)
            {
                m = new Matrix3();
            }
            Matrix3 result = new Matrix3(this.val);

            result.Mul(m);
            return(result);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }