flash数学函数详解(三)

      flash 2004-10-10 18:8
10、三角函数

既然说到三角函数,我们还是要从最基本的做起。我们的三角函数,最初是在直角三角形中形成的,来看一下这个三角形。


图片如下:

直角三角形实际上就是其中的一个角是90度的三角形,也就是有一个角是直角。它的直角处用一个小的正方形来标识。它的三条边,直角边用a、b标记,最长的一边c称为斜边。整个现代文明可以说都是建立在三角形的基础之上的。直角三角形中三条边和三个角之间的关系是as程序员必备的基础知识。

1、勾股定理

这是一个很远古的公式,可能我们很早就已经了解过了。

a的平方加上b的平方等于c的平方。那么,如果我们想计算c的值,对该方程的两边求平方根就可以了。

对于这个定理,大家先有一个基本的认识,等我们来介绍具体在flash场景中使用的时候,我们再具体的来说一个它的应用。

2、正弦函数:

正弦在数学中是这样来定义的,在直角三角形中,角θ的正弦等于它的对边和斜边之比。

sinθ=对边/斜边

在我们的三角形中,公式可以修改为:

sinθ=b/c

在数学中,关于这个函数有很多计算的项目和应用。我们在这里给大家提两点需要大家注意:

(1)、关于它的取值。

在数学中,θ是一个角度值,所以我们会遇到sin(30),sin(60)等等。而它的计算结果是一个数值,是一个-1<=sinθ<=1大于等于负一而小于等于正一的值。这个值在不同的角度范围有时为正,有时为负,取值如下:

0度<=θ<=180度 sinθ>=0

180度<=θ<=360度 sinθ<=0

这样我们可以利用它来控制一个量在一定的范围内来回变化,而不会超出这个返回。这个在这个函数的图像中也会体现出来。

(2)、关于它的周期性。

三角函数都有周期性。正弦和余弦的周期都是360度,也就是2π。以它为周期,循环变化。也就是经过360度,结果重复一次。

在as中关于正弦函数Math.sin()

在as中计算角度的正弦的语法很简单。

Math.sin(theta)

变量theta是用弧度表示的一个角。下面是一个简单的测试。

x=Math.sin(0)
trace(x)//输出0
x=Math.sin(Math.PI)
trace(x)//输出1.22460635382238e-16 这是因为浮点数是以二进制格式存储的,因此会有一定的误差。这是一个非常接近于0的值
x=90*Math.PI/180 //把90度转换为弧度值
x=Math.sin(x)
trace(x)//输出为1
x=Math.sin(90)//之间计算数字90的正弦值
trace(x)//输出0.893996663600558
//从这里可以看出,flash as接受的是一个弧度值,如果是一个数字,则as会认为它是一个弧度来进行计算。
下面是使用flash的绘图函数,绘制一个正弦函数的图

Flash 动画

代码如下,加到第一帧就可以了

//使用绘图函数,绘制一个正弦函数的图像。
x0=50 //定义开始绘制的位置。
y0=200
a=100//定义一个初始的振幅,也就是扩大一个,不然sinθ的值小于1,很难看出来。
//我们设计一个动态绘制的过程。
du=0//定义开始绘制的角度
_root.moveTo(x0,y0) //绘制的初始位置
x=x0 //定义开始绘制的水平位置
_root.onEnterFrame=function(){ //进入帧时,开始绘制
_root.lineStyle(3,0x00ff00,100) //绘制格式
hudu=Math.PI*du/180 //把角度转换为弧度
x=x+0.5 //水平方向每隔0.5象素,绘制一次
du++ //角度递加,每次加一度
//trace(du),你可以测试一下角度的变化
y=y0-a*Math.sin(hudu) //绘制的y坐标.在这里为甚么用y0减去这个三角函数值呢?因为三角函数计算出来在小于180度时为一个正值而对于flash的场景来说,上边数值小,下面数值大,为了和数学上的函数图像适应,所以减去.
_root.lineTo(x,y) //绘制
if(du==720){ //如果角度增加到720度,也就是两个循环,重新开始绘制
clear() //清屏
x=x0 //初始化位置
_root.moveTo(x0,y0)
du=0 //角度变为0
}
}


标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}