zoukankan      html  css  js  c++  java
  • WPF与缓动(三) 指数缓动

                                                             WPF与缓动(三) 指数缓动
                                                                                 周银辉

    指数缓动给人的感觉是加速度很大.
    它的原始公式来自:P(t) = Math.Pow(2,   10*(t-1));
    与其他缓动一样,我在这里就直接给出其核心代码了:
     //指数缓动
            protected override double GetCurrentValueCore(double defaultOriginValue, double defaultDestinationValue, AnimationClock animationClock)
            
    {
                
    double from = (this.From==null?defaultDestinationValue:(double)this.From);
                
    double to = (this.To==null?defaultOriginValue:(double)this.To);
                
    double delta = to - from;
                
    double value = animationClock.CurrentProgress.Value;


                
    //加速
                
    //return delta * Math.Pow(2, 10 * (value - 1)) + from;

                
    //减速
                
    //return delta * (-Math.Pow(2, -10 * value) + 1) + from;

                
    //先加速,后减速
                double t = value * this.Duration.TimeSpan.Ticks;
                
    double d = this.Duration.TimeSpan.Ticks;
                
    if ((t/=(d/2)) < 1)
                
    {
                   
    return  delta / 2 * Math.Pow(210 * (t - 1)) + from;
                }

                
    return delta / 2 * (-Math.Pow(2-10 * --t) + 2+ from;
                
            }

    点击这里下载源代码

  • 相关阅读:
    C++实现网络寻路
    java实现生日相同概率
    java实现生日相同概率
    Mysql 锁表 for update (引擎/事务)
    mysql(for update)悲观锁总结与实践
    Select For update语句浅析
    Mysql查询语句使用select.. for update导致的数据库死锁分析
    数据库中Select For update语句的解析
    【转载】支付宝运营架构中柔性事务指的是什么?
    互联网支付系统整体架构详解
  • 原文地址:https://www.cnblogs.com/zhouyinhui/p/758897.html
Copyright © 2011-2022 走看看