資訊內(nèi)容
用python和pygame游戲編程入門-認(rèn)識(shí)向量
我們先考慮二維的向量,向量的表示和坐標(biāo)很像,(10,20)對(duì)坐標(biāo)而言,就是一個(gè)固定的點(diǎn),然而在向量中,它意味著x方向行進(jìn)10,y方向行進(jìn)20,所以坐標(biāo)(0,0)加上向量(10,20)后,就到達(dá)了點(diǎn)(10,20)。
向量可以通過兩個(gè)點(diǎn)來計(jì)算出來,如下圖,A經(jīng)過向量AB到達(dá)了B,則向量AB就是(30, 35) – (10, 20) = (20, 15)。我們也能猜到向量BA會(huì)是(-20, -15),注意向量AB和向量BA,雖然長(zhǎng)度一樣,但是方向不同。
向量運(yùn)算
我們觀察下圖,點(diǎn)A出發(fā),通過向量AB到達(dá)B點(diǎn),B通過BC到達(dá)C;由A出發(fā)的話,經(jīng)向量AC就直接到達(dá)C。
由此我們得到一個(gè)顯而易見的結(jié)論向量AC = 向量AB + 向量BC。向量的加法計(jì)算方法呼之欲出:
(20, 15) + (-15, 10) = (20-15, 15+10) = (5, 25)
把各個(gè)方向分別相加,我們就得到了向量的加法運(yùn)算法則。很類似的,減法也是同樣,把各個(gè)方向分別想減。
有加減法,那乘除法呢?
用一個(gè)向量來乘(除)一個(gè)數(shù),其實(shí)際意義就是,向量的方向不變,而大小放大(縮小)多少倍。
向量的運(yùn)算被廣泛的用來計(jì)算到達(dá)某個(gè)位置時(shí)的中間狀態(tài),比如我們知道一個(gè)角色從A到B,中間有10幀,那么很顯然的,把向量通過(B-A)/10計(jì)算出來,每次將角色移動(dòng)到當(dāng)前位置就可以了,很簡(jiǎn)單吧?
本站部分內(nèi)容轉(zhuǎn)載自網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系管理員及時(shí)刪除。

- 上一篇
用python和pygame游戲編程入門-向量類的使用
上一節(jié)中我們學(xué)習(xí)并明白了什么是向量,向量之間如何進(jìn)行計(jì)算。現(xiàn)在已經(jīng)有人為我們寫好了一個(gè)可以直接使用的向量類-》在Python3.x下可用的向量類源碼
- 下一篇
用python和pygame游戲編程入門-簡(jiǎn)單動(dòng)畫
簡(jiǎn)單的修改坐標(biāo)雖然可以實(shí)現(xiàn)動(dòng)畫效果,但是這會(huì)對(duì)機(jī)器的性能有很大的損耗,如果動(dòng)畫元素很多,速度就會(huì)慢下來。這可不是我們想看到的!