zoukankan      html  css  js  c++  java
  • 一行代码让圆周运动不依赖于三角函数

    想在AS3里实现圆周运动,我们一般都这么写:

    var centerX:Number = 300;
    var centerY:Number = 200;
    var radius:Number = 20;
    var degree:Number = 0;
    addEventListener(Event.ENTER_FRAME, enterFrameHandler);
    function enterFrameHandler(event:Event):void{
      display.x = centerX + radius * Math.cos(degree * Math.PI / 180);
      display.y = centerY + radius * Math.sin(degree * Math.PI / 180);
      degree += 5;
    }
    

      其中centerX和centerY分别是圆心的x坐标和y坐标,radius为圆周的半径,degree是当前角度。

    代码中出现了cos和sin两个三角函数,可别觉得这些中学的基础知识大家都懂,没准就在高中毕业当天,就有不少人把这些函数都还给老师了。就像iloveas,除了“欲穷干里日”一句外,小学课本里教过的古诗词都早给我忘的一干二净了。

    那么,有没办法不通过这些蛋疼的三角函数来实现同样的效果呢?说到这里,大神们估计很容易想到向量、矩阵等高端货,不过今天iloveas给大家分享一个更简单的做法,只要一行代码,什么弦什么切的都可以一边凉快去了:

    var pt:Point = Point.polar(radius, degree * Math.PI / 180);
    display.x = centerX + pt.x;
    display.y = centerY + pt.y;
    

      如果你喜欢装逼,那以下写法会更适合你:

    var pt:Point = Point.polar(radius, degree * Math.PI / 180).add(new Point(centerX, centerY));
    display.x = pt.x;
    display.y = pt.y;
    

      不可否认的是,iloveas今天介绍的方法在运行效率方面比自己写三角函数要差的多,但它很适合像iloveas这样的数学白痴们入门编程这一行。在这点上,AS3确实做的比其他语言好,所以不管AS3的明天何去何从,大家都来多多支持AS3吧。

  • 相关阅读:
    P2048 [NOI2010]超级钢琴
    [LOJ#6468.] 魔法
    [牛客小白月赛18] Forsaken的数列
    [JSOI2011]柠檬
    [TJOI2015]组合数学
    【单调队列优化】[CF372C] Watching Fireworks is Fun
    【线段树】[Luogu P4198]楼房修建
    Python资源
    人生的几个阶段
    两种解读,生活的意义和方法
  • 原文地址:https://www.cnblogs.com/fengziwu/p/10914972.html
Copyright © 2011-2022 走看看