目錄 其他材料 |
波長、頻率與振幅 任何波形的運動(例如簡諧運動)都可以用兩個基本的特征來描述:波長與振幅。波長是指震動的速度,振幅是指震動的幅度。 具體的說,波長就是相臨的波峰之間的距離,振幅就是從波的基線到波峰之間的高度(或者說是波峰波谷之間的高度的一半)。 波的頻率是另外一種描述波速的方式,它的值等于波長的相反數(shù)(頻率=1/波長)。頻率不是測量相臨波峰之間的間隔,頻率是用來描述在給定時間間隔內(nèi)(通常是一秒)波峰的數(shù)量。 在Javascript中,我們可以通過給特定值(自變量)乘以某個系數(shù)來增加波形的頻率。這就將使這些特定值快速的變大,進而增加最終的頻率。例如,函數(shù)Math.sin(time*6)的波形頻率就是函數(shù)Math.sin(time)的波形頻率的六倍,因為輸入值增加到原來的六倍。 可以給三角函數(shù)值乘以一個系數(shù)來增加波形的振幅,例如,函數(shù)5*Math.sin(time)的波形振幅就是函數(shù)Math.sin(time)的波形振幅的五倍,前一個波形振幅范圍是-5至5,后一個是-1至1。 amplitude*Math.sin(angle*frequency) 波形的振幅或頻率在波形的變化過程中不一定要保持連續(xù),例如,我們可以使用一個劃塊來控制系數(shù)的變化,調(diào)整頻率或振幅隨著波形的變化而做出非連續(xù)的變化。下面的圖例中表示出了控制波形頻率與振幅的差別: 順便說一句,上面的波形變化就是AM波段與FM波段最本質(zhì)的區(qū)別:一個是調(diào)節(jié)振幅另一個是調(diào)節(jié)頻率。 示例:彈簧運動衰減
原始的表達式和動畫如下所示: x=Math.sin(time*3)*60; 我們的目的是讓彈簧的運動慢慢減慢直到停止運動,這就意味著我們需要在動畫的過程中將振幅的值逐漸衰減到零。在原始的表達式中我們將振幅(60)與頻率(3)設(shè)置為常量,所以在動畫的過程中,其頻率與振幅保持不變。要達到我們的要求,需要將這些值設(shè)置為變量: frequency=3; 現(xiàn)在,我們降低波形的頻率,但是這樣會導致運動結(jié)果不真實。彈簧的運動會慢慢減速,但是最終彈簧不會停止下來,而是運動的周期非常的長,就像是在稠稠的蜜糖中運動一樣,因為其振幅始終不為零。這樣,我們就要來降低振幅以達到減速停止運動的目的,最終的運動變化圖象如下圖所示: 那么我們怎樣來定義振幅變量以使其隨著時間慢慢減小呢,一種方法是利用時間書寫一個簡單的方程式來控制振幅變化,例如"amplitude=60/time.", 但是這種方法比我們實際需要的變化要快得多, 而且當時間為零時會產(chǎn)生錯誤,因為零不能做分母。 我們將采用另外一種簡單高效的方法得到更好的效果——liner()函數(shù)插值函數(shù): amplitude=linear(time, 0, out_point-1, 120, 0); 隨著時間從零變化到圖層出點的前一秒,振幅將從120變化到0,我們將使用一個較大振幅值(120)以表現(xiàn)出運動的力量,同時將頻率值增大以加強運動的節(jié)奏。 frequency=10; 最終的結(jié)果將比以前的運動更加真實: 還有一點遺憾的是,這種方法模擬的運動還有一點點的失真,因為我們需要準確的計算出彈簧到達極限時蘊涵的彈性勢能并將這個能量值按照能量的轉(zhuǎn)換定律傳遞給后面的每一幀畫面,但是表達式不會預測到下一幀或上一幀,所以模擬這種運動十分困難,在早期版本的AE中的Motion Math可以實現(xiàn)這種效果,甚至還包括兩個簡單的彈簧腳本("spring.mm" and "dbspring.mm"位于AE應用程序的文件夾中),用這個腳本來模擬彈簧運動可以達到非常真實的效果。 |
所有內(nèi)容版權(quán)歸JJ Gifford.所有,翻譯權(quán)歸CG頻道所有,違者必糾。