转 第三章 三角学应用(3)(as3.0)

转载 2011年10月12日 20:07:48

圆和椭圆
     目前为止我们已经掌握了正弦波,下面再来看看它的兄弟,余弦波。与正弦波的形成相
同,只不过是使用余弦函数代替了正弦函数而已。 如果你还记得前面所说的正弦和余弦是怎
样一种相反关系的话,就能理解,它们只是波形都相同,只是所处位置不同了。图 3-19 为
余弦波图像:
转 <wbr>第三章 <wbr>三角学应用(3)(as3.0)
图 3-19 余弦波形
    可见,余弦图像中 0 度和 2pi 度(或 360 度)的值都为 1,从 1 开始经过 0,-1,0, 最后
回到 1。所以,它与正弦曲线相同,只不过位置发生了一点偏移。
圆形运动
    在执行物体移动的动画时,完全可以使用余弦来代替正弦。实际上,余弦和正弦协同工
作时,才能形成一个更加有用的功能:使物体沿圆形运动,如图 3-20。
转 <wbr>第三章 <wbr>三角学应用(3)(as3.0)

图 3-20 物体沿圆形运动时的几个点
      如图 3-20 所示,以图中的圆为例,盯住右侧的那直角条边(y),然后开始对它进行旋转,
我们发现这条边正在被倒置。  这条边的中心点就是圆心,而它的运动范围就是这个圆的半径。
就像在第一个正弦实验中一样,我们可以计算出这条边的长度:角的正弦值乘以半径。在这
里,使用正弦函数非常合适,当我们从侧面观察这个圆时,就可以算出 y 的长度——对边
的长度。如果把这个圆放倒,再来观察它,发现角是在向前向后或向左向右移动的。这时,
可以使用余弦函数计算出 x 的长度——邻边的长度。重要的一点是,两个的夹角都是相同
的,  而不像 Random.as 那个例子中使用不同的角度计算 x,y 坐标。  这里我们只需要记住用
正弦函数计算 y ,用余弦函数计算 x。下面请看 ActionScript 代码:
package {
  import flash.display.Sprite;
  import flash.events.Event;
  public class Circle extends Sprite {
   private var ball:Ball;
   private var angle:Number = 0;
   private var centerX:Number = 200;
   private var centerY:Number = 200;
   private var radius:Number = 50;
   private var speed:Number = .1;
   public function Circle() {
     init();
   }
   private function init():void {
     ball = new Ball();
     addChild(ball);
     ball.x = 0;
     addEventListener(Event.ENTER_FRAME, onEnterFrame);
   }
   public function onEnterFrame(event:Event):void {
     ball.x = centerX + Math.cos(angle) * radius;
     ball.y = centerY + Math.sin(angle) * radius;
     angle += speed;
   }
  }
}
      大家可以自己写这个例子,也可以打开 Circle.as 作为文档类。执行后发现,获得了
一个完美的圆。这段代码的精华就是使用余弦来确定 x 坐标,使用正弦来确定 y 坐标,你
应该对他们的关系非常了解了。在 Flash 中,只要提到 x ,你就应该马上想到余弦,并且
还能联想到 y 使用正弦。请在最后这段代码上多花些时间,它将是 ActionScript 动画工
具箱中最有用的工具之一。
椭圆运动
      想要获得一个椭圆该怎么办呢,其实很简单,问题就在于半径。如果让 x 和 y 运动的大
小相同,那么就得到一个圆。如果想得到一个椭圆形,我们只需要在计算 x 和 y 位置时使用
不同的半径值: radiusX 和 radiusY 。从严格的几何观点来看,使用这两个名称实在不怎
么好,但是它们确实非常简单易懂,也非常好记非常直观,所以我还是坚持使用这两个变量
名。下面看看它们是如何配合的,见 Oval.as:
package {
  import flash.display.Sprite;
  import flash.events.Event;
  public class Oval extends Sprite {
   private var ball:Ball;
   private var angle:Number = 0;
   private var centerX:Number = 200;
   private var centerY:Number = 200;
   private var radiusX:Number = 200;
   private var radiusY:Number = 100;
   private var speed:Number = .1;
   public function Oval() {
     init();
   }
   private function init():void {
     ball = new Ball();
     addChild(ball);
     ball.x = 0;
     addEventListener(Event.ENTER_FRAME, onEnterFrame);
   }
   public function onEnterFrame(event:Event):void {
     ball.x = centerX + Math.cos(angle) * radiusX;
     ball.y = centerY + Math.sin(angle) * radiusY;
     angle += speed;
   }
  }
}
                             意味着小球在距离 centerX 200 个像素内左右运动。 radiusY
      这里, radiusX 为 200,
为 100,意味着小球上下运动的范围只有 100 像素,这样就得到了一个不匀称的圆。
勾股定理
      最后,介绍一下勾股定理。虽然并不能算是三角学中正式的一部分,但是它与我们这个
学科还是有一些关系的,   并且还涉及到一个将来会经常使用的公式,所以在这里介绍它非常
合适。
      勾股定理是很久以前一个希腊人发明。 这个定理是说 A 的平方 + B 的平方 = C 的平方 ,
听起来好像是儿歌,如果大家之前学过这个定理,那么交流起来效果最好。
     深入探讨一下,另一种对该定理的叙述是:    直角三角形的两条直角边的平方和等于斜边
的平方,这句话真正说到点子上了。请看图 3-21 所示直角三角形。
                                                    

More ++, Less C

近来在sdmagazine上面看到的一篇好文章,决定与大家共享。不过由于最近忙,就不翻译了^_^More ++, Less CStandard template libraries, abstract...
  • cber
  • cber
  • 2001-09-19 14:13:00
  • 1392

转 第三章 三角学应用(2)(as3.0)

反正切(Arctangent)     大家可能都猜到了,反正切简单地说就是正切函数的反函数。我们只要输入对边与邻边 的比值,就可以得到相应的角度。     在 Flash 中有两个函数可计算反...
  • roadProgram
  • roadProgram
  • 2011-10-12 20:07:17
  • 1080

转 第三章 三角学应用(1)(as3.0)

从这一章开始,我们将学习三角学,并在第五章开始应用到动画技术中,其实在下一章的绘 图技术中就会接触到。如果你已经对三角学有所了解或渴望学习动画方面的知识, 那么可以 跳过开始这部分,待日后遇到不懂...
  • roadProgram
  • roadProgram
  • 2011-10-12 20:06:42
  • 2164

数据库原理与应用第二版第三章课后习题答案

  • 2014年12月24日 14:37
  • 155KB
  • 下载

数据库原理第三章习题作业

学号:2013211492 1、关系模型由哪三部分组成?  关系数据结构、关系数据操作和完整性约束 2、什么是关系的实体完整性规则? 基本关系的所有主关键字对应的主属性都不能取空值,例如,学生...
  • hsk256
  • hsk256
  • 2015-04-13 19:22:35
  • 508

数据结构 第三章 思维导图

  • cyj201311671204
  • cyj201311671204
  • 2014-12-29 14:12:42
  • 836

高等数学:第三章 微分中值定理与导数的应用(3)曲线的凹凸 拐点 曲率

§3.7  曲线的凹凸与拐点 一、引例 研究了函数的单调性、极性,对于函数的性态有了更进一步的了解。为了描绘出函数的图象的主要特征,仅凭此两点还是不够的。 【引例】作函数与在  上的图象。 ...
  • GarfieldEr007
  • GarfieldEr007
  • 2016-03-02 12:29:39
  • 1319

AS3 强制类型转换

每一种编程语言都提供强制类型转换,允许你将某一种数据类型转换成另一种数据类型,AS3自然也不例外。但是虽然我编写了不少Flex程序,对AS3中的强制类型转换还是不太清楚,以前AS中是这样进行强制类型转...
  • fuhaojing
  • fuhaojing
  • 2010-09-30 22:34:00
  • 2156

as3.0 字符转换(针对unicode字符的处理)

针对flash游戏的网络通讯,使flash字符都使用unicode的方式进行处理,在没有找到As3.0自身对unicode字符的处理方式,本人采用了下列处理方法 unicode字符串转为ByteArr...
  • mm_lvw
  • mm_lvw
  • 2010-04-15 12:36:00
  • 9650

As3.0与java 5语法对比

Below is a short comparison table of major elements/concepts of these two languages for a quick refe...
  • feng_sundy
  • feng_sundy
  • 2006-11-14 17:15:00
  • 5668
收藏助手
不良信息举报
您举报文章:转 第三章 三角学应用(3)(as3.0)
举报原因:
原因补充:

(最多只允许输入30个字)