Ejemplo n.º 1
0
 public static Matrix ComposeTransform(Matrix.Decomposed decomposed)
 {
     // According to https://www.w3.org/TR/css-transforms-1/#recomposing-to-a-2d-matrix
     return(Matrix.Identity
            .Prepend(Matrix.CreateTranslation(decomposed.Translate))
            .Prepend(Matrix.CreateRotation(decomposed.Angle))
            .Prepend(Matrix.CreateSkew(decomposed.Skew.X, decomposed.Skew.Y))
            .Prepend(Matrix.CreateScale(decomposed.Scale)));
 }
Ejemplo n.º 2
0
        public static Matrix.Decomposed InterpolateDecomposedTransforms(ref Matrix.Decomposed from, ref Matrix.Decomposed to, double progress)
        {
            Matrix.Decomposed result = default;

            result.Translate = InterpolateVectors(from.Translate, to.Translate, progress);
            result.Scale     = InterpolateVectors(from.Scale, to.Scale, progress);
            result.Skew      = InterpolateVectors(from.Skew, to.Skew, progress);
            result.Angle     = InterpolateScalars(from.Angle, to.Angle, progress);

            return(result);
        }
        private static bool ComputeDecomposedTransform(TransformOperations operations, int startOffset, out Matrix.Decomposed decomposed)
        {
            Matrix transform = operations.ApplyTransforms(startOffset);

            if (!Matrix.TryDecomposeTransform(transform, out decomposed))
            {
                return(false);
            }

            return(true);
        }