OpenGL的點(diǎn)與向量

請預(yù)定了我們游戲引擎課程的同學(xué)界酒,務(wù)必強(qiáng)迫自己至少瀏覽一遍所有內(nèi)容昔脯,因?yàn)檫@些心法口訣將時時刻刻體現(xiàn)在整個游戲引擎的設(shè)計(jì)中。

向量的長度

現(xiàn)在我們已經(jīng)解釋了關(guān)于坐標(biāo)系系統(tǒng)的一些東西骡楼,我們接下來可以來看看最常見的一些被用到點(diǎn)和向量上的操作了腌歉。在任何3D程序或者渲染器中,這些操作應(yīng)該都是非常常見的避除。

單位化一個向量

如同我們前面介紹的那樣怎披,在3D空間中,一個向量可以被看成是一個從一個點(diǎn)指向另一個點(diǎn)的箭頭驹饺。這個向量不僅僅指明了從A指向B的方向钳枕,同時還可以被用來計(jì)算AB兩點(diǎn)之間的距離。值得注意的是赏壹,我們的坐標(biāo)軸通常那幾根基向量都是單位向量鱼炒。

一個單位化過的向量的長度是1,這樣的向量被稱為單位向量蝌借。單位化一個向量是非常簡單的昔瞧。我們用它的每一個分量去除以它的長度就可以了指蚁。

image

在數(shù)學(xué)里,你可能會發(fā)現(xiàn)一個叫做norm的詞自晰,它定義了一個函數(shù)可以用來指定一個向量的長度凝化。剛才我們講的這個函數(shù)被稱為歐幾里德范數(shù)。

點(diǎn)乘

點(diǎn)乘兩個向量在數(shù)學(xué)中可以表示為A·B酬荞,兩個向量的點(diǎn)乘會得到一個數(shù)搓劫。我們在這里討論的都是實(shí)數(shù)范圍內(nèi)的向量乘法。點(diǎn)乘是讓每個向量的各個部分分別求積后再加起來混巧。

在任何3D程序或者渲染器中枪向,兩個向量進(jìn)行點(diǎn)乘是非常重要的操作,因?yàn)辄c(diǎn)乘最終得到了一個關(guān)于cos的式子咧党,我們很多時候都需要這個cos來做一些后續(xù)的運(yùn)算秘蛔。比如點(diǎn)乘可以用來檢測兩個向量是否互相垂直,如果互相垂直傍衡,那么點(diǎn)乘的結(jié)果就是0深员。當(dāng)點(diǎn)乘的結(jié)果是-1的時候,那么兩個向量剛好方向相反蛙埂。如果點(diǎn)乘的結(jié)果是1的時候倦畅,則表示,兩個向量剛好指向完全相同的方向上箱残。同樣點(diǎn)乘還可以用來去表示兩個向量間的夾角或者一個向量與某個坐標(biāo)軸之間的夾角滔迈。

叉乘

叉乘同樣也是對兩個向量進(jìn)行操作。與點(diǎn)乘不一樣的是被辑,相較于點(diǎn)乘的結(jié)果是個數(shù)字,叉乘的結(jié)果是一個向量敬惦。并且盼理,得到的這個向量同時垂直于參與進(jìn)行叉乘的兩個向量。叉乘的數(shù)學(xué)表示為:

C = A x B

得到的C矩陣跟A和B互相正交俄删。如果用A和B定義一個平面的話宏怔,C就垂直于A與B所在的平面。叉乘中畴椰,乘法的順序非常重要臊诊,A叉乘B和B叉乘A的結(jié)果是不一樣的。

這也就是說斜脂,叉乘是不滿足乘法交換律抓艳。

其他的運(yùn)算-加法、減法

加法和減法用在點(diǎn)上意義比較直觀帚戳。就是挪動點(diǎn)的位置玷或。但向量之間進(jìn)行加法和減法運(yùn)算儡首,就不是那么回事了。有些3D的API會區(qū)分點(diǎn)偏友、法線蔬胯、向量的這些運(yùn)算。因此位他,確實(shí)可以去創(chuàng)建點(diǎn)氛濒、法線、向量這三個完全不同的C++的類鹅髓。比如法線不會像點(diǎn)和向量那樣被轉(zhuǎn)換舞竿。兩個點(diǎn)相減,很明顯可以產(chǎn)生一個向量迈勋。把一個向量加到另一個向量或者點(diǎn)上炬灭,會產(chǎn)生一個點(diǎn)等等這類的區(qū)別。但是有的人也認(rèn)為這么干會增加代碼的復(fù)雜度靡菇。所以在咱們的戰(zhàn)火引擎種并沒有對他們做明確的區(qū)分重归,但使用者必須知道他們數(shù)學(xué)意義上的區(qū)別。

有興趣的關(guān)注我們的公眾號--圖形之心厦凤。由于微信公眾號每個月只能群發(fā)四次鼻吮,所以下個月開始我們將開始發(fā)布雞翅膀風(fēng)格的文章,我們同樣會提供原文鏈接较鼓。如果大家不想錯過每一篇文章椎木,請關(guān)注我們的官方網(wǎng)站上的各類書籍文字閱讀部分。

閱讀原文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末博烂,一起剝皮案震驚了整個濱河市香椎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌禽篱,老刑警劉巖畜伐,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異躺率,居然都是意外死亡玛界,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門悼吱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慎框,“玉大人,你說我怎么就攤上這事后添”靠荩” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長猎醇。 經(jīng)常有香客問我窥突,道長,這世上最難降的妖魔是什么硫嘶? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任阻问,我火速辦了婚禮,結(jié)果婚禮上沦疾,老公的妹妹穿的比我還像新娘称近。我一直安慰自己,他們只是感情好哮塞,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布刨秆。 她就那樣靜靜地躺著,像睡著了一般忆畅。 火紅的嫁衣襯著肌膚如雪衡未。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天家凯,我揣著相機(jī)與錄音缓醋,去河邊找鬼。 笑死绊诲,一個胖子當(dāng)著我的面吹牛送粱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掂之,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼抗俄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了世舰?” 一聲冷哼從身側(cè)響起动雹,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎跟压,沒想到半個月后洽胶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡裆馒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了丐怯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喷好。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖读跷,靈堂內(nèi)的尸體忽然破棺而出梗搅,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布无切,位于F島的核電站荡短,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏哆键。R本人自食惡果不足惜掘托,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望籍嘹。 院中可真熱鬧闪盔,春花似錦、人聲如沸辱士。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颂碘。三九已至异赫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間头岔,已是汗流浹背塔拳。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留切油,地道東北人蝙斜。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像澎胡,于是被迫代替她去往敵國和親孕荠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容