OpenGL之3D数学

向量

  • 向量是既有大小又有方向的量。

零向量与单位向量

  • 模等于0的向量为零向量,模等于1的向量叫做单位向量。注意零向量的方向是任意的。
  • 由一个向量v求与它同方向的单位向量过程称为标准化(normalization),这个单位向量为标准化向量(normalized vector)。

向量点积(dot product)

  • 向量点积的结果是一个标量,其定义为:A.B = |A||B|cosθ
    向量点乘.png

向量叉积(cross product)

  • 两个向量a和b的叉积,结果是一个向量c = a x b,c的方向垂直于a 和 b,它需要根据右手规则确定。c的大小等于|c| = |a||b|sinθ
  • 右手规则是指将向量a与b放在同一个起点时,当右手的四个手指从a所指方向转到b所指方向握拳时,大拇指的指向即为a x b的方向
    右手规则.jpg
  • 在利用以坐标形式表示向量a和b时,在3D空间中,叉积的结果用矩阵表示为:


    叉乘.png

行向量和列向量

  • 1 x n的矩阵称之为行向量,n x 1的矩阵称为列向量。
  • OpenGL编程中习惯用列向量表示点或者向量。矩阵在内存中以列优先存储,但是具体传递参数时,一般函数提供了是否转置的布尔参数来调整存储格式。例如void glUniformMatrix4fv函数提供了布尔变量 GLboolean transpose 来表示是否转置矩阵。

零矩阵和n阶单位矩阵

  • 一个矩阵,如果所有元素都为0,则为零矩阵。
  • 对于一个n阶方阵,如果主对角线元素全为1,其余元素都为0则称为n阶单位矩阵。
  • 对于一个矩阵A,存在单位矩阵E满足:EA=AE=A
  • 任意矩阵A与对应的零矩阵相乘得到零矩阵。

矩阵转置

  • 转置操作即是将矩阵的行和列互换。


    矩阵转置.png

矩阵运算

  • 两个矩阵A和B要能执行加减法,必须是行和列数目相等,计算过程,即对应的元素相加(Aij+Bij)或者相减(Aij−Bij)
  • 用一个数k乘以矩阵A,结果为矩阵A中每个元素乘以数k。
  • 两个矩阵Amxn和Bnxp要执行乘法操作,需要满足:左边矩阵的列数和右边矩阵的行数相等。
    矩阵相乘.png

行列式

行列式.png

逆矩阵

  • 对于n阶方阵A,如果存在一个n阶方阵B使得:AB = BA = E 成立,则称B是A的逆矩阵,矩阵A是可逆矩阵,或者说矩阵A是非奇异矩阵(Nonsingular matrix)。
  • 只有n阶方阵才有逆矩阵的概念。n阶方阵A可逆的充要条件是A的行列式|A|≠0.
  • 在3D图形处理中,用一个变换矩阵乘以向量,代表了对原始图形进行了某种变换,例如缩小,旋转等,逆矩阵表示这个操作的逆操作,也就是能够撤销这一操作。例如对一个向量v用矩阵M相乘,然后再用M−1相乘,则能得到原来的向量v: M−1(Mv)=(M−1M)v=Iv=v
  • 当用矩阵A,B,C转换向量v时,如果v用行向量记法,则矩阵按转换顺序从左往右列出,表达为vABC;如果v采用列向量记法,则转换矩阵应该放在左边,并且转换从右往左发生,对应的转换记为CBAv。

正交矩阵

正交矩阵.png

向量组的线性组合

  • 向量组是一组向量的集合,例如α1,α2,⋯,αm表示一个由m个n×1的矩阵(n维列向量)组成的列向量组。对应的也有行向量组的概念。如果存在一组实数λ1,λ2,⋯,λm,使得向量β满足下式:
    β=λ1α1+λ2α2+⋯+λmαm
    则称向量β是α1,α2,⋯,αm的线性组合,或者说β由α1,α2,⋯,αm线性表示

向量组线性无关

  • 对于向量组α1,α2,⋯,αm,如果存在不全为零的数λ1,λ2,⋯,λm,使下面的等式成立:
    λ1α1+λ2α2+⋯+λmαm=0
    则称向量组α1,α2,⋯,αm线性相关(linearly dependent), 否则称为线性无( linearly independent)。也就是要使向量组α1,α2,⋯,αm线性无关,那么所有的系数λi都必须为0。

线性空间的基

  • 如果在线性空间V中存在n个线性无关的向量α1,α2,⋯,αn使得V中任意元素α都能由他们线性表示,则称α1,α2,⋯,αn为V的一个基。基所含向量个数n称为线性空间V的维数,并称V为n维线性空间。

线性变换

  • 线性变换 T: U→V是一个函数,将定义域U中元素,映射到值域V中,并满足下列两个条件:
    1)可加性 对任意u1,u2∈U,都满足: T(u1+u2)=T(u1)+T(u2)
    2)齐次性 对任意u∈U和任意标量k,都满足: T(ku)=kT(u)

线性变换与矩阵一一对应

  • 对一个线性变换T,存在一个矩阵A与之对应,变换表示为T(x)=Ax,其中x为列向量。
  • 线性变换由基及变换后基的值唯一确定,通过计算线性变换后基的值可以得到线性变换对应的矩阵A
  • 可以通过计算 A=(T(u1),T(u2),⋯,T(un))来获取线性变换T对应的矩阵A。

仿射变换

线性变换无法表达一类重要的变换——平移变换。平移变换表达的是对于点p=(x,y,z)经过d=(αx,αy,αz)所表示的位移后得到点p′=(x′,y′,z′)的过程,表示为:
p′=p+d

我们尝试寻找变换T
满足:T(x) = Ax = p′ = | x+αx |
| y+αy |
| z+αz |
当d≠0时,上式中T(0)≠0,由式子1可知,这不是线性变换。因此需要引入仿射变换的概念。

齐次坐标(homogeneous coordinate)

齐次坐标.png

4x4矩阵表示仿射变换

4x4矩阵表示仿射变换.png

来自:
OpenGL学习脚印: 坐标和变换的数学基础(math-coordinates and transformations)
OpenGL学习脚印: 向量和矩阵要点(math-vector and matrices)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容