3D數(shù)學(xué)基礎(chǔ) 簡要?dú)w納

3D數(shù)學(xué)基礎(chǔ) 簡要?dú)w納

  • 計(jì)算機(jī)圖形學(xué)第一準(zhǔn)則:看上去是對的就是對的断序,簡單記為近似原則
  • OpenGL是基于3D的铃绒,屏幕是2D的
  • OpenGL中使用的是列向量

左手系&右手系

  • OpenGL更多的是基于左手系
  • 線性代數(shù)更多是基于右手系
  • 3D圖形學(xué)中常用坐標(biāo)系
    • 世界坐標(biāo)系:系統(tǒng)的絕對坐標(biāo)系
    • 物體坐標(biāo)系:物體產(chǎn)生關(guān)聯(lián)
    • 攝像機(jī)坐標(biāo)系/照相機(jī)坐標(biāo)系
    • 慣性坐標(biāo)系:物體坐標(biāo)系轉(zhuǎn)換為世界坐標(biāo)系的 “半途”,目的是為了減少復(fù)雜度潭兽,是一個(gè)過渡
  • eg:以下情景基于什么坐標(biāo)系褒侧?
    • 書在我的西邊還是北邊?==> 東南西北 -- 世界坐標(biāo)系
    • 計(jì)算機(jī)在我的前面還是后面嗡载?==> 上下左右 -- 物體坐標(biāo)系
    • 從一個(gè)房間移動到另一個(gè)房間 ==> 尋路型 -- 世界坐標(biāo)系
    • 你能看見我的計(jì)算機(jī)嗎? ==> 攝像機(jī)坐標(biāo)系

向量

  • 存儲 -- 數(shù)組

  • 圖形學(xué)中:最多到4維

    • 2D:x铸史、y
    • 3D:x鼻疮、y怯伊、z
    • 4D:x琳轿、y、z耿芹、w
  • 零向量:沒有方向崭篡,沒有長度 即 模 = 0

  • 負(fù)向量 = (-1).向量, 將向量中的每個(gè)數(shù)都乘以 -1

    • 幾何意義:得到一個(gè)與原向量大小相等,方向相反的向量
      負(fù)向量
  • 向量大小計(jì)算 即 模的計(jì)算 = 向量中所有數(shù)的平方和吧秕,再求根號


    向量模計(jì)算
    • 2D向量幾何意義:直角三角形最長邊的邊長


      2D向量幾何意義
  • 標(biāo)量與向量的運(yùn)算總結(jié)

    • 標(biāo)量不能與向量進(jìn)行加減運(yùn)算
    • 標(biāo)量與向量可以相乘琉闪,且滿足交換律,不需要寫乘號
    • 向量可以除以標(biāo)量砸彬,即相當(dāng)于向量乘以一個(gè)標(biāo)量的倒數(shù) 即 v(向量)/k = v 乘以 1/k
    • 標(biāo)量與向量的乘除 優(yōu)先級高于 加減
    • 標(biāo)量不能除以向量颠毙,且向量不能除以另一個(gè)向量
    • 乘法的特殊情況:負(fù)向量斯入,即 向量 乘以 標(biāo)量-1
    • 幾何意義: 以因子(k 即 標(biāo)量)縮放向量的長度,如果k<0, 向量的方向就會相反
      • 當(dāng)k = -1時(shí)蛀蜜,向量僅翻轉(zhuǎn)刻两,得到大小相等,方向相反的向量
      • 當(dāng)k = -2時(shí)滴某,向量是先翻轉(zhuǎn)磅摹,再放大,即-2可以看成(-1)乘以2
  • 向量標(biāo)準(zhǔn)化

    • 向量標(biāo)準(zhǔn)化 = 向量 / 向量的模霎奢,且向量 != 0
    • 標(biāo)準(zhǔn)化向量 :是向量長度 = 1户誓,不等于單位向量,單位向量是主對角線數(shù)為1幕侠,其他全為0帝美,單位向量是標(biāo)準(zhǔn)化向量
  • 向量的加減總結(jié)

    • 向量不能與標(biāo)量或者維度不同的向量相加減
    • 向量加法滿足交換律
    • 向量減法不滿足交換律,只有當(dāng) a=b 時(shí)晤硕, a-b = b-a
    • 向量加法幾何意義:平移向量
  • 向量的距離公式

    • 向量a與向量b的距離公式 = ||b-a|| = b與a對應(yīng)位置數(shù)差的平方和证舟,再求根號
      向量距離公式
    • 幾何意義:兩點(diǎn)間的距離
  • 向量的點(diǎn)乘總結(jié)

    向量點(diǎn)乘

    • 滿足交換律,因?yàn)辄c(diǎn)乘結(jié)果是一個(gè)標(biāo)量
    • 幾何意義:兩向量的夾角窗骑,即 a · b = |a||b|cosα ==> α = arccos(a·b / |a||b|)女责,當(dāng)a、b是單位向量時(shí)创译, α = arccos(a·b)
a·b 夾角α a和b
> 0 (0°抵知,90°) 方向基本相同
= 0 90° 正交
<0 (90°,108°) 方向基本相反
  • 根據(jù)已知的向量v和向量n软族,且v2平行于n刷喜,v1垂直于n,求向量v2和向量v1


    image
    • v2平行于n: v2 = n(|v2| / |n|)
    • cosα = |v2| / |v| ==> |v2| = cosα·|v|
    • 將|v2|代入v2 ==> v2 = n(cosα·|v| / |n|)
    • 分子分母同時(shí)乘以|n| ==> v2 = n(cosα·|v|·|n| / |n|2)
    • 根據(jù)a · b = |a||b|cosα ==> v2 = n(v·n / |n|2)立砸,此時(shí)求得v2
    • 根據(jù)v2求v1掖疮,因?yàn)?code>v1 + v2 = |v| ==> v1 = |v| - v2
    • 將v2公式代入v1 ==> v1 = |v| - n(v·n / |n|2)
  • 向量叉乘總結(jié)【常用】

    • 向量叉乘運(yùn)算規(guī)則如下


      向量叉乘
    • 向量的叉乘優(yōu)先級高于點(diǎn)乘
    • 幾何意義
      • a × b = c,c垂直于a和b構(gòu)成的平面颗祝,即c是該平面的法線浊闪,分別與a,b都垂直
      • a × b = c螺戳,即|c| = |a||b|cosα
    • 叉乘既不滿足交換律搁宾,也不滿足結(jié)合律
    • 任何向量與自己叉乘等于零向量,即 向量a × 向量a = 0


      image

矩陣

  • 矩陣在OpenGL中推薦使用一維數(shù)組存儲

  • 方陣:行=列的矩陣

  • 向量可以當(dāng)做1*n(行向量) / n*1(列向量)的矩陣使用

  • 標(biāo)量和矩陣的乘法:將矩陣中的每個(gè)數(shù)都乘以標(biāo)量

  • 矩陣與矩陣相乘倔幼,即 A?*? * B?*? = C?*?盖腿,A的列數(shù)必須匹配B的行數(shù)(記法圖示如下)

    矩陣相乘

  • 矩陣乘法總結(jié)

    • 當(dāng)S是單位矩陣且乘法有意義,任意矩陣M乘以方陣S,翩腐,那么得到的結(jié)果就是原矩陣鸟款,即MI = IM = M
    • 矩陣乘法不滿足交換律,即AB != BA
    • 矩陣乘法滿足結(jié)合律茂卦,前提是ABC的維數(shù)使其乘法有意義欠雌,即 (AB)C = A(BC)
    • 矩陣乘法也滿足與標(biāo)量/向量的結(jié)合律,即(kA)B = k(AB) = A(kB); (vA)B = v(AB)
    • 矩陣乘積的轉(zhuǎn)置 相當(dāng)于 先轉(zhuǎn)置矩陣疙筹,然后以相反順序相乘富俄,即(AB)? = B?A?
  • 向量與矩陣乘法總結(jié)

    • 行向量左乘矩陣,結(jié)果是行向量
    • 列向量右乘矩陣而咆,結(jié)果實(shí)列向量
    • 結(jié)果向量中每個(gè)元素都是原向量與矩陣中單獨(dú)行/列的點(diǎn)積
    • 矩陣-向量成法滿足對向量加法的分配律霍比,即 (v+w)M = vM + wM,其中v暴备,w是向量悠瞬,M是矩陣
  • 基向量:單位向量

    • p、q涯捻、r 定義分別指向+x,+y,+z?方向的單位向量量浅妆,v = xp+yq+zr


      基向量
    • 矩陣M對應(yīng)到坐標(biāo)軸的單位向量如圖所示


      image
- 矩陣的每一行都能解釋為轉(zhuǎn)換后的基向量
  • 矩陣的幾何意義
    • 方陣的行能被解釋為坐標(biāo)的基向量
    • 為了將向量從原坐標(biāo)變換到新坐標(biāo),需要用向量乘以一個(gè)矩陣
    • 線性變換:從原坐標(biāo)系到基向量定義的新坐標(biāo)系的變化
    • 零向量乘以任何矩陣仍是零向量

2D下的旋轉(zhuǎn)矩陣公式推演

核心動畫CoreAnimation中蘋果官方文檔有提到

  • 2D下的旋轉(zhuǎn)時(shí)圍繞原心旋轉(zhuǎn)的

  • 三角函數(shù)表

三角函數(shù)/角度 0(0°) π/2(90°) π(180°) 3π/2(270°) 2π(360°)
sinα 0 1 0 -1 0
cosα 1 0 -1 0 1
tanα 0 不存在 0 不存在 0
cotα 不存在 0 不存在 0 不存在

旋轉(zhuǎn)時(shí)向量的變化與三角函數(shù)值的關(guān)系

  • 旋轉(zhuǎn)變化如圖所示


    2D-圍繞原點(diǎn)旋轉(zhuǎn)變化過程
  • 向量與三角函數(shù)值的關(guān)系


    基向量與三角函數(shù)值關(guān)系

3D下的旋轉(zhuǎn)矩陣公式推演

  • 3D下的旋轉(zhuǎn)時(shí)圍繞某個(gè)軸旋轉(zhuǎn)的障癌,當(dāng)圍繞哪個(gè)軸凌外,哪個(gè)軸的矩陣中所對應(yīng)的行和列就用基向量表示

    • 圍繞x軸旋轉(zhuǎn),x軸不會發(fā)生變化涛浙,所以x對應(yīng)的矩陣行用基向量表示,圖示如下

    • q向量的值變化過程為: +y(起始) ==> +z ==> -y ==> -z
      1 0 0
      0 0 1
      0 1 0
      0 0 -1
      0 -1 0

    • r向量的值變化過程:+z(起始) ==> -y ==> -z ==> +y
      0 0 1
      0 -1 0
      0 0 -1
      0 1 0

    p康辑、r變化過程圖示為


    3D-圍繞x旋轉(zhuǎn)變化過程

    與三角函數(shù)的關(guān)系如圖所示


    image
  • 圍繞Y、圍繞Z與圍繞x類似

    • 圍繞Y軸時(shí)R的矩陣:010表示的是基向量轿亮,圍繞誰懂疮薇,誰就必須由基向量表示
      圍繞Y旋轉(zhuǎn)
    • 圍繞Y軸時(shí)R的矩陣:001表示的是基向量


      圍繞z旋轉(zhuǎn)

縮放與平移矩陣公式推演

  • 2D縮放:基向量p和q分別乘以標(biāo)量k
  • 平移:在哪個(gè)軸平移,將這個(gè)軸的對應(yīng)的值與平移距離相加
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載我注,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者按咒。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市但骨,隨后出現(xiàn)的幾起案子励七,更是在濱河造成了極大的恐慌,老刑警劉巖嗽冒,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呀伙,死亡現(xiàn)場離奇詭異,居然都是意外死亡添坊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門箫锤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贬蛙,“玉大人雨女,你說我怎么就攤上這事⊙糇迹” “怎么了氛堕?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長野蝇。 經(jīng)常有香客問我讼稚,道長,這世上最難降的妖魔是什么绕沈? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任锐想,我火速辦了婚禮,結(jié)果婚禮上乍狐,老公的妹妹穿的比我還像新娘赠摇。我一直安慰自己,他們只是感情好浅蚪,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布藕帜。 她就那樣靜靜地躺著,像睡著了一般惜傲。 火紅的嫁衣襯著肌膚如雪洽故。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天盗誊,我揣著相機(jī)與錄音收津,去河邊找鬼。 笑死浊伙,一個(gè)胖子當(dāng)著我的面吹牛撞秋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嚣鄙,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼吻贿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哑子?” 一聲冷哼從身側(cè)響起舅列,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卧蜓,沒想到半個(gè)月后帐要,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弥奸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年榨惠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赠橙,死狀恐怖耽装,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情期揪,我是刑警寧澤掉奄,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站凤薛,受9級特大地震影響姓建,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缤苫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一速兔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榨馁,春花似錦憨栽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至珍剑,卻和暖如春掸宛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背招拙。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工唧瘾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人别凤。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓饰序,卻偏偏與公主長得像,于是被迫代替她去往敵國和親规哪。 傳聞我的和親對象是個(gè)殘疾皇子求豫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344