三角学笔记

来源:互联网 发布:一淘网是淘宝的吗 编辑:程序博客网 时间:2024/05/17 22:04

弧度制(radian)与角度制(degress)

        弧度制与角度制是角度测量中的两种特殊制度。我们大概对于角度制最为熟悉,甚至闭

着眼都能画出 45 度或 90 度的角。圆的 360 度体系已经成为了一种文化,人们常说“180

度转弯”就是指“转到相反的方向”,这里并不是指转弯的方向,而是指一种相反的观点。

我们所讨论的角度,对于计算机来说,就是弧度。所以,不管你是否喜欢,都要对弧度制

有所了解。

        1 弧度约等于 57.2958 度。你也许会问“这符合逻辑吗?”确实有其逻辑所在。一个圆,

360 度,计算出的弧度为 6.2832。仍然没有任何意义?好,想一下圆周率派 Pi(π) 约等于

3.1416,而一个圆(6.2832 弧度)就等于 2 pi。我们知道 360 度相当于 2 pi,180 度相当于

pi,90 度相当于 pi/2,等等。

     影片剪辑和 Sprite 影片的 rotation 属性都要使用角度制,而且属性非常会经常使

用。例如,一辆汽车需要旋转到运动的方向,如果使用三角学计算运动方向,那么所得到的

角度是以弧度制表示的,而汽车的旋转则需要使用角度制。相反,如果要指定某个对象向某

个方向前进,就要获得它的旋转(rotation)角度,而这是用角度制表示的,如果要在三角函

数中使用它就一定要转换为弧度制。

角度制,还应用在滤镜上,如果使用投影滤镜(drop shadow filter),来为物体投射 45 度

的阴影,就需要指定其角度而非弧度,不论是在 Flash IED 中还是使用 ActionScript 代

码都一样。

    为什么在一个编程体系里有两种截然不同的制度呢?也许这就是 Flash 双重性。一方

面,这是设计人员的工具,在 Flash IDE 中拥有所有的绘图和变形工具,可以绘制出漂亮

的图形。如果你对一名设计员说把你制作的 logo 文字旋转一个弧度,你肯定会遭白眼。另

一方面,Flash 也是一个开发工具,更像一种编程语言,ActionScript 用户使用弧度制。

总之,不论你是否喜欢都要使用到它们,而且还需要掌握角度制与弧度制间的相互转换。以

下是公式:

弧度(radians) = 角度(degrees) * Math.PI /180

角度(degrees) = 弧度(radians) * 180 / Math.PI

180 度大约等于 3.14…弧度。换句话讲,半圆为 pi 个弧度,整圆为 2 pi 个弧度,一个

弧度大概为 57.29…度

正弦(Sine)

下面是三角学的第一个部分。一个角的正弦值等于该角的对边与斜边的比,在ActionScript 中,使用 Math.sin(angle) 函数来表示。对边长为 1,斜边长为 2,两条边的比为 1 比2,或记作 1/2 或0.5,因此,我们可以说 30度角的正弦值为 0.5,下面在 Flash 中测试一下:

trace(Math.sin(30));

    输出结果为 –0.988031624092862,为什么会这样,能够找出原因吗?这是因为我们忘

记了将结果转换为弧度制。我敢说你以后会常犯这种错误(我也一样),所以一定要小心。

以下是正确的写法:

trace(Math.sin(30 * Math.PI / 180));

成功!输出 0.5

    还可能得到 0.4999… 这样的值,这并不是程序的错误,而是由于二进制计算机常以浮

点形式表示数值。但这个值已经非常接近了,所以就认为它等于 0.5。

反正弦(Arcsine)和反余弦(Arccosine)

    与正切相似,反正弦和反余弦在一般的 Flash 动画中很少使用。然而,我们还是要学

习一下它们的用法,实际上就是正弦和余弦函数的反函数。换句话讲,就是输入一个比例值,

返回一个角度值(以弧度表示)。

    在 ActionScript 函数中记作 Math.asin(ratio) 和 Math.acos(ratio)。下面让来测

试一下,我们已经知道 30度角的正弦值为 0.5,所以 0.5 的反正弦值应为 30 度,检验一下:

trace(Math.asin(0.5) * 180 / Math.PI);

别忘记将结果转换为角度制,才能得到角度制 30 度,而不是弧度制 0.523。

我们知道,30 度角的余弦值大约为 0.865,下面以同样的方法来测试一下:

trace(Math.acos(0.865) * 180 / Math.PI);

得到结果为 30.1172947473221。如果把 30 度的余弦值输入得更准确,那么所得的结果也会更为精确。怎么样,不难吧

反正切(Arctangent)

大家可能都猜到了,反正切简单地说就是正切函数的反函数。我们只要输入对边与邻边的比值,就可以得到相应的角度。

在 Flash 中有两个函数可计算反正切。第一个就是像前面介绍过的函数一样

Math.atan(ratio),只需提供对边与邻边的比例值。例如,前面学过 30度角的正切值约为

0.577。试一下:

trace(Math.atan(0.577) * 180 / Math.PI);

输出结果是一个近似 30的数,不是非常直观易懂吗,为什么还需要另一个函数呢?

下面有请 Math.atan2(y,x), 这是 Flash 的另一个反正切函数,它比 Math.atan(ratio)要有用得多。实事上,只需要学会这个函数的用法就可以了,函数中包括两个参数:对边长度与邻边长度。有时常会误写成 x,y,请注意应该是 y,x。请看如下示例,输入

Math.atan2(1,2),然后记住这个结果:

trace(Math.atan2(1, 2) * 180 / Math.PI);

输出结果为 26.565051177078,这正是角 B 的度数。下面再输入-1/-2(角 D),再来试试:

trace(Math.atan2(-1, -2) * 180 / Math.PI);

出乎意料的结果–153.434948822922.为什么会这样?从角D自身的底边开始,它确实为 26.57 度,但别忘了 Flash 的角度是从 X 轴的正半轴顺时针计算的。因此,从 Flash 的角度来衡量,则该角被视为-153.43 度。

原创粉丝点击