Exemplo n.º 1
0
        /// <summary>
        /// Rotate the control points by the defined value in radians.
        /// </summary>
        /// <param name="value">The amount to rotate by in radians.</param>
        public void Rotate(float value)
        {
            var rotation = Complex.FromAngle(value);

            for (int i = 0; i < ControlPoints.Count; i++)
            {
                ControlPoints[i] = Complex.Multiply(ControlPoints[i], ref rotation);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Get the interpolated transform at a specific time.
        /// </summary>
        /// <param name="xfb">The transform.</param>
        /// <param name="beta">beta is a factor in [0,1], where 0 indicates alpha0.</param>
        public void GetTransform(out Transform xfb, float beta)
        {
            xfb     = new Transform();
            xfb.p.X = (1.0f - beta) * C0.X + beta * C.X;
            xfb.p.Y = (1.0f - beta) * C0.Y + beta * C.Y;
            float angle = (1.0f - beta) * A0 + beta * A;

            xfb.q.Phase = angle;

            // Shift to origin
            xfb.p -= Complex.Multiply(ref LocalCenter, ref xfb.q);
        }
Exemplo n.º 3
0
 public static void Multiply(ref Transform left, Complex right, out Transform result)
 {
     result.p = Complex.Multiply(ref left.p, ref right);
     result.q = Complex.Multiply(ref left.q, ref right);
 }
Exemplo n.º 4
0
 public static Transform Multiply(ref Transform left, ref Transform right)
 {
     return(new Transform(
                Complex.Multiply(ref left.p, ref right.q) + right.p,
                Complex.Multiply(ref left.q, ref right.q)));
 }
Exemplo n.º 5
0
 public static void Multiply(ref Transform left, Complex right, out Transform result)
 {
     result.Position = Complex.Multiply(ref left.Position, ref right);
     result.Rotation = Complex.Multiply(ref left.Rotation, ref right);
 }
Exemplo n.º 6
0
 public static Transform Multiply(ref Transform left, ref Transform right)
 {
     return(new Transform(
                Complex.Multiply(ref left.Position, ref right.Rotation) + right.Position,
                Complex.Multiply(ref left.Rotation, ref right.Rotation)));
 }