中文字幕人成乱码熟女,亚洲av无码乱码在线观看性色,中文字幕乱码中文乱码777,亚洲av高清在线一区二区三区 ,最新69国产成人精品视频

目錄

矢量加法

距離與長(zhǎng)度

三角函數(shù)

圖示:正弦、余弦與正切

圓周函數(shù)

簡(jiǎn)諧運(yùn)動(dòng)

頻率與振幅

波形加法與乘法

反函數(shù)

其他材料

表達(dá)式基礎(chǔ)

參考表格

工程文件連接

返回主頁(yè)

距離——勾股定理,length()函數(shù)

我們有不同的理由需要測(cè)量?jī)牲c(diǎn)之間的距離——例如,書寫一個(gè)跨度計(jì)算腳本或創(chuàng)建鄰近效應(yīng)。正如我們前面討論的,要計(jì)算兩點(diǎn)之間線段的距離,我們只需對(duì)兩點(diǎn)的對(duì)應(yīng)的矢量進(jìn)行減法運(yùn)算,運(yùn)算后所得到的矢量的長(zhǎng)度就是兩點(diǎn)之間的距離。

在AE中,有兩種計(jì)算矢量長(zhǎng)度的方法,一種是復(fù)雜方法,另外一種是簡(jiǎn)單方法。首先讓我們了解一下復(fù)雜方法:

勾股定理

還記得我們中學(xué)幾何中學(xué)習(xí)的勾股定理吧,在該定理中規(guī)定了,直角三角形中斜邊的平方等于兩個(gè)直角邊的平方和:

在前面的教程中我們提到過(guò),任何一個(gè)二維矢量都可以組成一個(gè)直角三角形,所以我們可以使用勾股定理來(lái)計(jì)算任意兩點(diǎn)之間的線段長(zhǎng)度。首先我們通過(guò)計(jì)算來(lái)找到表示兩點(diǎn)之間線段的矢量,然后將它分離出來(lái),最后使用勾股定理就可以計(jì)算出這條線段的長(zhǎng)度。

 

根據(jù)Javascript語(yǔ)法對(duì)表達(dá)式的規(guī)定,我們需要書寫下面的表達(dá)式來(lái)完成上面的計(jì)算過(guò)程:

// 拾取兩點(diǎn)
point1=this_comp.layer("A").position;
point2=this_comp.layer("B").position;

// 計(jì)算出兩點(diǎn)之間的矢量
delta=sub(point1, point2);
X=delta[0];
Y=delta[1];

// 計(jì)算矢量長(zhǎng)度
distance=Math.sqrt(X*X+Y*Y);

不是很復(fù)雜是么,但是還有一個(gè)更簡(jiǎn)單的方法。

length(vector)

在AE表示式中內(nèi)置了一個(gè)函數(shù)來(lái)計(jì)算矢量的長(zhǎng)度:length()函數(shù)。將該函數(shù)應(yīng)用到任何維數(shù)的矢量中就會(huì)返回矢量的長(zhǎng)度,

使用length()函數(shù),我們可以重新書寫上面的表達(dá)式:

// 拾取圖層
point1=this_comp.layer("A").position;
point2=this_comp.layer("B").position;

// 計(jì)算出兩點(diǎn)之間的矢量
delta=sub(point1, point2);

// 計(jì)算矢量長(zhǎng)度
length(delta);

使用這種方法不僅書寫簡(jiǎn)便而且理解記憶起來(lái)要比使用勾股定理要簡(jiǎn)便得多。這種方法還有一個(gè)優(yōu)點(diǎn)就是可以計(jì)算出任何維數(shù)矢量的長(zhǎng)度,我們也可以將勾股定理應(yīng)用到三維圖矢量中,但是非常麻煩。

實(shí)例應(yīng)用:交互模糊

說(shuō)了這么多,這種計(jì)算方法究竟可以應(yīng)用到什么地方呢?一個(gè)最明顯的應(yīng)用就是應(yīng)用這種方法來(lái)控制圖層或者是效果參數(shù)。在下面的例子中, 我們將使用前面提到過(guò)的插值算法首先將距離值范圍重新設(shè)定以影響快速模糊效果,然后再設(shè)定該距離范圍以影響縮放參數(shù)。

在第一個(gè)合成中,我們分別對(duì)四個(gè)圖層應(yīng)用了快速模糊效果并為它們的模糊程度屬性加入了相似的表達(dá)式,同時(shí)使用一個(gè)名為"Drag Me"的黃色固態(tài)層來(lái)控制受控圖層的模糊程度。在表達(dá)式中我們使用了liner()插值算法將位移的范圍從0至80縮減到40至0,所以當(dāng)控制圖層接近受控圖層時(shí),模糊效果將會(huì)變得更加強(qiáng)烈。

完成上面的設(shè)置后,我們就可以通過(guò)調(diào)整控制圖層的位置來(lái)依次交互的影響四個(gè)受控圖層,在渲染前,將控制圖層的顯示開關(guān)關(guān)掉,這樣我們就可以完成整個(gè)動(dòng)畫了。

下面就是完整的表達(dá)式:

// 為受控圖層加入快速模糊效果
// 為模糊程度加入表達(dá)式

// Point1 是當(dāng)前受控圖層的位置, point2 是控制圖層的位置
point1=this_layer.position;
point2=this_comp.layer("Drag Me").position;

// 計(jì)算出兩點(diǎn)之間的矢量線段
delta=sub(point1, point2);

// 計(jì)算出該矢量的長(zhǎng)度
distance=length(delta);

//使用 linear() 的方法將 distance 的范圍重新設(shè)定為40至0
linear(distance, 0, 80, 40, 0);

實(shí)例應(yīng)用:縮放

在第二個(gè)合成中,我們將類似的表達(dá)式應(yīng)用在了受控圖層的縮放屬性上,創(chuàng)建一個(gè)動(dòng)態(tài)縮放的效果:

在這里表達(dá)式的書寫基本上與前一個(gè)合成中的相同,因?yàn)榭s放屬性是一個(gè)二維數(shù)組(如果轉(zhuǎn)化為3D圖層就是三維數(shù)組),我們只需要將最后一句重新調(diào)整一下就可以了, (要詳細(xì)了解矢量與數(shù)組單擊這里)

//重新設(shè)定距離范圍,以使圖層越接近時(shí)縮放值越大,圖層距離越遠(yuǎn)時(shí),縮放值越小
linear(distance, 0, 80, [250,250], [75,75]);

單擊這里 打開項(xiàng)目文件 (Windows 用戶單擊這里.)

所有內(nèi)容版權(quán)歸JJ Gifford.所有,翻譯權(quán)歸CG頻道所有,違者必糾。