OpenGL:三维数学基础坐标系、向量、矩阵

一、计算机图形学

计算机图形学(Computer Graphics)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。其广泛应用于游戏、动画、仿真、虚拟现实(VR)、增强现实(AR)等领域。

在数学之中,研究自然数和整数的领域称为离散数学,研究实数的领域称作连续数学。

在计算机图形学中,为虚拟世界选择度量单位的关键是选择离散的精度。一种错误的观点认为short、int是离散的,而float、double是连续的,而事实上,这些数据类型都是离散的。于是,计算机图形学有如下准则:

计算机图形学第一准则:近似原则——如果它看上去是对的,它就是对的。

二、笛卡尔坐标系

2D笛卡尔坐标系是一个精确定位点的框架。2D坐标的标准表示法是(x,y),相信大家初中都学过。一般,标准的笛卡尔坐标系是x轴向右,y轴向上。而计算机图形学中的屏幕坐标往往是x轴向右,y轴向下。如图1所示。

图1:2D笛卡尔坐标系和2D屏幕坐标系

3D笛卡尔坐标系类似,增加了第三个维度,z轴。3D坐标系分为完全不同的2种坐标系,左手坐标系和右手坐标系。判断方法为,左手坐标系:伸出左手,让拇指和食指成“L”形,大拇指向右,食指向上,其余手指指向前方。此时,拇指、食指和其余三指分别代表x、y、z轴的正方向。右手坐标系,相同,只是把左手换成右手。如图2所示。

image.png

图2:左手坐标系与右手坐标系

其中左手坐标系广泛应用于计算机图形学、D3D之中,而右手坐标系广泛应用于OpenGL、线性代数、3DSMax之中。

三、多坐标系

任何一个3D坐标系都是可以无限延伸的,可以包含空间中所有的点,因此,只需要一个坐标系,就能描述所有的点。但是,人们发现,不同情况下使用不同的坐标系会更为方便。

1.世界坐标系

世界坐标系是一个特殊的坐标系,它描述了其他坐标系所需要的参考框架。它是一个坐标系系统中最大的、最外部的坐标系。“向东”、“向南”这些概念只有在世界坐标系中才有。

2.物体坐标系

物体坐标系是和特定物体相关的坐标系。每个物体都有独立的坐标系。“前”、“后”、“左”、“右”这些概念只有在物体坐标系中才有意义。

3.摄像机坐标系

摄像机坐标系是于观察者密切相关的坐标系,它是一种特殊的物体坐标系,被定义在摄像机的屏幕可视区域。摄像机坐标系中,摄像机在原点,x轴向右,z轴向前(朝向屏幕内或摄像机方向),y轴向上(不是世界的上方而是摄像机本身的上方)。

4.惯性坐标系

惯性坐标系简化了世界坐标系到物体坐标系的转换。其原点与物体坐标系重合,而坐标轴与世界坐标系平行。

引入惯性坐标系的意义在于:物体坐标系转换到惯性坐标系只需要旋转,从惯性坐标系转换到世界坐标系只需要平移。

四、向量

对程序猿而言,向量就是一个数组。数组包含的“数”的数目就是向量的维度。一般计算机图形学中的向量主要讨论2维、3维和4维向量。前两者一般用于2维、3维空间中位置和位移的表示,4维向量一般用于颜色(RGB和透明度alpha)。

任意一个点都可以用从原点开始的向量来表示。

下面就是本章重点之一,向量运算法则(示例皆为3维向量):

1.负向量

- [ x  y  z ] = [ -x  -y  -z ]

几何意义:向量变负,将得到一个与原向量大小相等,方向相反的向量。

2.向量的模

|| v || = sqrt( x ^ 2 + y ^ 2 + z ^ 2 )

上公式中sqrt表示开方。

几何意义:向量的长度

3.标量与向量的乘法

k [ x  y  z ] = [ kx  ky  kz ]

几何意义:以因子|k|缩放向量的长度,如果k < 0则向量的方向被倒转。

4.向量的加减法

[ x1 y1 z1 ] + [ x2 y2 z2 ] = [ x1+x2 y1+y2 z1+z2 ]

[ x1 y1 z1 ] - [ x2 y2 z2 ] = [ x1-x2 y1-y2 z1-z2 ]

几何意义:向量a和b相加的几何解释为:平移向量,使向量a的头连接向量b的尾,接着从a的尾向b的头画一个向量,这就是向量加法的“三角形法则”。减法与之类似。

5.向量点乘

术语“点乘”来自记法a·b中的点号,点乘中的点乘号不可省略。其优先级高于加法和减法。

[ x1 y1 z1 ] · [ x2 y2 z2 ] = x1x2 + y1y2 + z1z2

几何意义:点乘结果越大,2个向量越接近。

a·b = || a || || b || cosθ

θ为两向量夹角

6.向量叉乘

术语“叉乘”来自于记法aXb中的叉号。叉乘号不能省略。叉乘优先级高于点乘。

[ x1 y1 z1 ] X [ x2 y2 z2 ] = [ y1z2-z1y2 z1x2-x1z2 x1y2-y1x2 ]

叉乘不满足结合律。满足反交换律:aXb = -(bXa)

几何意义:aXb垂直于a、b,指向a、b所在平面的正上方,大小为以a、b为两边的平行四边形的面积,即为||a|| ||b|| sinθ。

五、矩阵

对程序猿来说,向量是一维数组,矩阵就是二维数组。向量是标量的数组,矩阵是向量的数组。

矩阵的运算法则如下:

1.标量与矩阵相乘

image.png

2.矩阵乘法

只有满足特定情况,两个矩阵才能相乘,一个rXn的矩阵A可以和nXc的矩阵B相乘,结果为一个rXc的矩阵,记为AB。矩阵乘法满足结合律,不满足交换律。

三维矩阵相乘的情况:


image.png

矩阵的几何意义:矩阵很抽象,一般来说,方阵(行列数相等的矩阵)能描述任意线性变换。下面将具体讲述矩阵和线性变换的公式。

六、矩阵和线性变换

1.旋转

绕单位向量n旋转θ角度的旋转矩阵为:
image.png

2.缩放

以单位向量n为缩放方向,k为因子的缩放矩阵为:


image.png

3.正交投影

向垂直于单位向量n的平面的投影矩阵为:


image.png

4.镜像

通过原点且垂直于n的平面的镜像变换矩阵为:


image.png

5.变换的组合

变换组合在渲染中非常普遍,设想世界中有一任意方向、任意位置的物体,我们要把他渲染到任意方向、任意位置的摄像机中。为了做到这一点,我们必须将物体的所有顶点从物体坐标系变换到世界坐标系,接着再从世界坐标系变换到摄像机坐标系。

其中数学变换如下:

image.png

这样就能在渲染的循环外先将所有矩阵组合起来,使循环内作矩阵乘法时只需要和一个矩阵相乘即可(省一次矩阵乘法,效率可提高不少)。

三维图形学中的坐标系,向量、矩阵的数学和几何意义以及公式就到此为止,本文涵盖了《3D数学基础+图形与游戏开发》前八章的大部分内容。单纯的理论知识是枯燥乏味的,但三维虚拟世界是丰富多彩的,希望阅读本文的读者将其作为三维图形学基础知识的笔记来看待。

来源:https://blog.csdn.net/iosevanhuang/article/details/9052165?utm_source=copy

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