1.座標系:
Flash座標系與數學座標系:X軸相同,Y軸相反。
[數學座標系]
[Flash中的座標系]
2.角度制與弧度制的轉換:
(1)弧度:弧度=角度*PI/180;
(2)角度:角度=弧度*180/PI;
*角度制多用於 ._rotation中
*弧度制多用於 sin(),cos(),atan()... ...
3.正弦、餘弦、正切:
1>正弦:Math.sin(n);在Flash中多用其映像性質:
隨X增長,Y取值為[0,1,0,-1,0]這個變化是周期性的。
2>餘弦:Math.cos(n);用法基本同上。
隨X增長,Y取值為[1,0,-1,0]這個變化是周期性的。
3>正切:Math.atan2(y,x)
多用於求兩點間的夾角。
Math.atan2(y,x)與Math.atan(n)功能相同只是傳回值有所不同:
atan2(x,y)的傳回值為一個數字
atan(n)的傳回值從
-PI/2 ~ PI/2
<<<
以上是一些理論知識,下面來看一些具體的應用執行個體
>>>
4.正弦執行個體:
思路:使用sin(n)控制mc的Y軸座標
步驟1:
製作一個球型,存為MC,執行個體名為"Ball",放入舞台中。
步驟2:
加AS入代碼層:
var A =
80;
//設定振幅
var centerY = 150;
//設定顯示位置
var n = 0;
//累加變數
onEnterFrame =
function () {
ball._y =
centerY+A*(-1*Math.sin(n*Math.PI/180));
//改變ball的y座標,呈現正弦震動
n += 10;
};
5.正切執行個體:
思路:使用tan2(x,y)求夾角,通過得出的夾角改變
mc._rotation。
步驟1:
繪製出眼,鼻,嘴作為背景;
畫一個黑色圓作為眼珠,存為MC,執行個體名為"Reye",註冊點在左中。
複製一個Reye,執行個體名為"Leye"作為另一個眼珠。
步驟2:
加AS入代碼層:
Reye.onMouseMove = function()
{
var dx = _xmouse-this._x;
var dy =
_ymouse-this._y;
//獲得滑鼠與眼球的距離
var theta =
Math.atan2(dy,
dx);
//求夾角(弧度制)
this._rotation =
theta/Math.PI*180;
//轉換為角度制
};
Leye.onMouseMove =
Reye.onMouseMove;
//Leye滑鼠移動時的函數等於Reye滑鼠移動時的函數
6.正弦和餘弦綜合執行個體:
1>畫圓方法:
用cos(n)作為點x,x點從1~0~-1~0
用sin(n)作為點y,結合點x,[1,0]~[0,1]~[-1,0]~[0,-1]~[1,0]
沿著, X軸=cos(n),
Y軸=sin(n)的路線繪製出圓
1>AS畫圓(重要):
思路:1.建立一個空的影片剪輯作為繪圖的容器,在該影片剪輯中進行繪圖;
2.角度(n) 從 0度到360度 遞增;
3.X座標為cos(n), Y座標為sin(n); n
要為弧度製表示;
_root.createEmptyMovieClip("MC",
1);
MC._x = 200;
MC._y =
200;
//建一個空影片剪輯,並放入舞台中部,作為繪線的容器
var R =
60;
//圓的半徑
MC.moveTo(R*Math.cos(0),
R*Math.sin(0));
//開始畫線的起點
MC.lineStyle(2);
for (n=1; n<360; n++)
{
angle = n*Math.PI/180;
tox =
R*Math.cos(angle);
toy =
R*Math.sin(angle);
//圓的參數方程
MC.lineTo(tox, toy);
}
2>AS畫正多邊型(重要):
思路:1.多邊形內角和等於360度;
2.根據邊數,確定每個頂點的角度;
3.再根據角度確定每個頂點的位置,並串連各頂點。
_root.createEmptyMovieClip("MC", 1);
MC._x = 200;
MC._y = 200;
var R = 50;
//半徑
var sides = 5;
//多邊型邊數
var angle =
(360*Math.PI/180)/sides;
//每等份 =
圓的弧度(360*PI/180)/sides份;
MC.moveTo(R*Math.cos(0),
R*Math.sin(0));
//繪製起點方在第一個角度上
MC.lineStyle(2)
for (n=1; n<=sides; n++)
{
var tox = R*Math.cos(n*angle);
var toy = R*Math.sin(n*angle);
MC.lineTo(tox,
toy);
//兩點間連線
}
3>AS畫螺旋線方法(阿基米德螺旋線):
思路:
1.利用極座標知識;
2.阿基米德螺線的極座標方程:
Ru(極徑)=a(位移量)*θ(極角);
3.可以簡單理解為一個半徑在不斷增長的圓。
_root.createEmptyMovieClip("MC", 1);
MC._x = 200;
MC._y = 200;
var R = 10;
//半徑長度
var a = 3;
//位移量
MC.moveTo(0, 0);
//從圓心點開始繪製
MC.lineStyle(2);
for (n=1; n<360; n++)
{
var angle = a*(n*Math.PI/180);
var tox = angle*R*Math.cos(angle);
var toy = angle*R*Math.sin(angle);
//螺旋線的參數方程
MC.lineTo(tox, toy);
}
Flash 充電: 三角函數
三角函數是數學中屬於初等函數中的超越函數的一類函數。它們的本質是任意角的集合與一個比值的集合的變數之間的映射。通常的三角函數是在平面直角座標系中
定義的,其定義域為整個實數域。另一種定義是在直角三角形中,但並不完全。現代數學把它們描述成無窮數列的極限和微分方程的解,將其定義擴充到複數系。
由於三角函數的周期性,它並不具有單值函數意義上的反函數。
三角函數在複數中有較為重要的應用。在物理學中,三角函數也是常用的工具。
基本初等內容
它有六種基本函數(初等基本表示):
函數名 正弦 餘弦 正切 餘切 正割餘割
正弦函數 sinθ=y/r
餘弦函數 cosθ=x/r
正切函數 tanθ=y/x
餘切函數 cotθ=x/y
正割函數 secθ=r/x
餘割函數 cscθ=r/y
以及兩個不常用,已趨於被淘汰的函數:
正矢函數 versinθ =1-cosθ
餘矢函數 vercosθ =1-sinθ
同角三角函數間的基本關係式:
·平方關係:
sin^2(α)+cos^2(α)=1
tan^2(α)+1=sec^2(α)
cot^2(α)+1=csc^2(α)
·積的關係:
sinα=tanα*cosα
cosα=cotα*sinα
tanα=sinα*secα
cotα=cosα*cscα
secα=tanα*cscα
cscα=secα*cotα
·倒數關係:
tanα·cotα=1
sinα·cscα=1
cosα·secα=1
三角函數恒等變形公式:
·兩角和與差的三角函數:
cos(α+β)=cosα·cosβ-sinα·sinβ
cos(α-β)=cosα·cosβ+sinα·sinβ
sin(α±β)=sinα·cosβ±cosα·sinβ
tan(α+β)=(tanα+tanβ)/(1-tanα·tanβ)
tan(α-β)=(tanα-tanβ)/(1+tanα·tanβ)
·輔助角公式:
Asinα+Bcosα=(A^2+B^2)^(1/2)sin(α+t),其中
sint=B/(A^2+B^2)^(1/2)
cost=A/(A^2+B^2)^(1/2)
·倍角公式:
sin(2α)=2sinα·cosα
cos(2α)=cos^2(α)-sin^2(α)=2cos^2(α)-1=1-2sin^2(α)
tan(2α)=2tanα/[1-tan^2(α)]
·三倍角公式:
sin3α=3sinα-4sin^3(α)
cos3α=4cos^3(α)-3cosα
·半形公式:
sin^2(α/2)=(1-cosα)/2
cos^2(α/2)=(1+cosα)/2
tan^2(α/2)=(1-cosα)/(1+cosα)
tan(α/2)=sinα/(1+cosα)=(1-cosα)/sinα
·萬能公式:
sinα=2tan(α/2)/[1+tan^2(α/2)]
cosα=[1-tan^2(α/2)]/[1+tan^2(α/2)]
tanα=2tan(α/2)/[1-tan^2(α/2)]
·積化和差公式:
sinα·cosβ=(1/2)[sin(α+β)+sin(α-β)]
cosα·sinβ=(1/2)[sin(α+β)-sin(α-β)]
cosα·cosβ=(1/2)[cos(α+β)+cos(α-β)]
sinα·sinβ=-(1/2)[cos(α+β)-cos(α-β)]
·和差化積公式:
sinα+sinβ=2sin[(α+β)/2]cos[(α-β)/2]
sinα-sinβ=2cos[(α+β)/2]sin[(α-β)/2]
cosα+cosβ=2cos[(α+β)/2]cos[(α-β)/2]
cosα-cosβ=-2sin[(α+β)/2]sin[(α-β)/2]
·其他:
sinα+sin(α+2π/n)+sin(α+2π*2/n)+sin(α+2π*3/n)+……+sin[α+2π*(n-1)/n]=0
cosα+cos(α+2π/n)+cos(α+2π*2/n)+cos(α+2π*3/n)+……+cos[α+2π*(n-1)/n]=0
以及
sin^2(α)+sin^2(α-2π/3)+sin^2(α+2π/3)=3/2
tanAtanBtan(A+B)+tanA+tanB-tan(A+B)=0
部分高等內容:
·高等代數中三角函數的指數表示(由泰勒級數易得):
sinx=[e^(ix)-e^(-ix)]/2
cosx=[e^(ix)+e^(-ix)]/2
tanx=[e^(ix)-e^(-ix)]/[^(ix)+e^(-ix)]
泰勒展開有無窮級數,e^z=exp(z)=1+z/1!+z^2/2!+z^3/3!+z^4/4!+…+z^n/n!+…
此時三角函數定義域已推廣至整個複數集。
·三角函數作為微分方程的解:
對於微分方程組 y=-y'';y=y'''',有通解Q,可證明
Q=Asinx+Bcosx,因此也可以從此出發定義三角函數。
補充:由相應的指數表示我們可以定義一種類似的函數——雙曲函數,其擁有很多與三角函數的類似的性質,二者相映成趣。
·特殊三角函數值
a 30`
45`
60`
90`
sina 1/2
√2/2
√3/2 1
cosa √3/2
√2/2
1/2
0
tga
√3/3
1
√3 不存在
ctga √3
1
√3/3
0
教程到此結束
QQ:147461195(FL基理大師)