示例#1
0
        public static D2D_MATRIX_4X4_F Rotation(float degrees, float centerX = 0, float centerY = 0, float centerZ = 0)
        {
            var magnitude = D2D1Functions.D2D1Vec3Length(centerX, centerY, centerZ);

            centerX /= magnitude;
            centerY /= magnitude;
            centerZ /= magnitude;
            var radians = degrees * (3.141592654f / 180.0f);

            D2D1Functions.D2D1SinCos(radians, out var sin, out var cos);
            var oneMinusCos = 1 - cos;

            return(new D2D_MATRIX_4X4_F(
                       1 + oneMinusCos * (centerX * centerX - 1),
                       centerZ * sin + oneMinusCos * centerX * centerY,
                       -centerY * sin + oneMinusCos * centerX * centerZ,
                       0,
                       -centerZ * sin + oneMinusCos * centerY * centerX,
                       1 + oneMinusCos * (centerY * centerY - 1),
                       centerX * sin + oneMinusCos * centerY * centerZ,
                       0,

                       centerY * sin + oneMinusCos * centerZ * centerX,
                       -centerX * sin + oneMinusCos * centerZ * centerY,
                       1 + oneMinusCos * (centerZ * centerZ - 1),
                       0,
                       0, 0, 0, 1
                       ));
        }
示例#2
0
        public static D2D_MATRIX_4X4_F RotationX(float degrees)
        {
            var radians = degrees * (3.141592654f / 180f);

            D2D1Functions.D2D1SinCos(radians, out var sin, out var cos);
            return(new D2D_MATRIX_4X4_F(
                       1, 0, 0, 0,
                       0, cos, sin, 0,
                       0, -sin, cos, 0,
                       0, 0, 0, 1
                       ));
        }
示例#3
0
        public static D2D_MATRIX_4X4_F SkewY(float degrees)
        {
            var radians = degrees * (3.141592654f / 180.0f);
            var tan     = D2D1Functions.D2D1Tan(radians);

            return(new D2D_MATRIX_4X4_F(
                       1, tan, 0, 0,
                       0, 1, 0, 0,
                       0, 0, 1, 0,
                       0, 0, 0, 1
                       ));
        }