ElasticEase.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / Animation / ElasticEase.cs / 1305600 / ElasticEase.cs

                            //------------------------------------------------------------------------------ 
//  Copyright (c) Microsoft Corporation, 2008
//
//  File: ElasticEase.cs
//----------------------------------------------------------------------------- 

using MS.Internal; 
 
namespace System.Windows.Media.Animation
{ 
    /// 
    ///     This class implements an easing function that gives an elastic/springy curve
    /// 
    public class ElasticEase : EasingFunctionBase 
    {
        public ElasticEase() 
        { 

        } 

        /// 
        /// Bounces Property
        ///  
        public static readonly DependencyProperty OscillationsProperty =
            DependencyProperty.Register( 
                    "Oscillations", 
                    typeof(int),
                    typeof(ElasticEase), 
                    new PropertyMetadata(3));

        /// 
        /// Specifies the number of oscillations 
        /// 
        public int Oscillations 
        { 
            get
            { 
                return (int)GetValue(OscillationsProperty);
            }
            set
            { 
                SetValueInternal(OscillationsProperty, value);
            } 
        } 

        ///  
        /// Springiness Property
        /// 
        public static readonly DependencyProperty SpringinessProperty =
            DependencyProperty.Register( 
                    "Springiness",
                    typeof(double), 
                    typeof(ElasticEase), 
                    new PropertyMetadata(3.0));
 
        /// 
        /// Specifies the amount of springiness
        /// 
        public double Springiness 
        {
            get 
            { 
                return (double)GetValue(SpringinessProperty);
            } 
            set
            {
                SetValueInternal(SpringinessProperty, value);
            } 
        }
 
        protected override double EaseInCore(double normalizedTime) 
        {
            double oscillations = Math.Max(0.0, (double)Oscillations); 
            double springiness = Math.Max(0.0, Springiness);
            double expo;
            if (DoubleUtil.IsZero(springiness))
            { 
                expo = normalizedTime;
            } 
            else 
            {
                expo = (Math.Exp(springiness * normalizedTime) - 1.0) / (Math.Exp(springiness) - 1.0); 
            }

            return expo * (Math.Sin((Math.PI * 2.0 * oscillations + Math.PI * 0.5) * normalizedTime));
        } 

        protected override Freezable CreateInstanceCore() 
        { 
            return new ElasticEase();
        } 
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK