OpenGL学习脚印: 向量和矩阵要点(math-vector and matrices)

写在前面 前面几节内容环境搭建,绘制三角形,以及使用索引绘制,让我们对现代OpenGL中绘图做了简单了解。要继续后面的部分,需要熟悉OpenGL中涉及的数学知识。因此本节开始介绍OpenGL中的基本数学。介绍这部分内容的主旨在于对OpenGL涉及的数学有个整体把握,重点把握一些概念在OpenGL中的应用。内容尽量以例子形式说明,仅在必要时会给出数学证明。一个主题往往涉及过多内容,对于文中省略的部分
摘要由CSDN通过智能技术生成

写在前面
前面几节内容环境搭建,绘制三角形,以及使用索引绘制,让我们对现代OpenGL中绘图做了简单了解。要继续后面的部分,需要熟悉OpenGL中涉及的数学知识。因此本节开始介绍OpenGL中的基本数学。

介绍这部分内容的主旨在于对OpenGL涉及的数学有个整体把握,重点把握一些概念在OpenGL中的应用。内容尽量以例子形式说明,仅在必要时会给出数学证明。一个主题往往涉及过多内容,对于文中省略的部分,请参考相应的教材。

通过本节可以了解到

  • 向量基本概念和操作
  • 矩阵的基本概念和操作
  • GLM数学库

向量的概念

向量是研究2D、3D数学的标准工具。向量V是一个既有大小又有方向的量(联系位移和速度的概念)。在数学上,常用一条有方向的线段来表示向量。例如下图n维空间的向量 v=AB=(v1,v2,...,vn) 如下图所示,向量起点为A,终点为B:
这里写图片描述
理解向量把握:
1.向量的大小就是向量的长度(模)。向量的长度非负。
2.向量的方向描述了向量的指向。
3.向量是没有位置的,与点是不同的。
4.向量与标量不同,变量是只有大小而没有方向的量,例如位移是向量,而距离是标量。


零向量与单位向量

向量的长度即模,定义为:
|v|=v21+v22++v2n
|v|=ni=1v2i

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


三角形法则和平行四边形法则

两个向量 a b ,当将b的起点放在a的终点,连接a的起点和b的终点的向量成为向量 a , b 之和,记为: c=a+b ,如下图所示(图片来自:mathinsight):
这里写图片描述

物理上力学求和经常使用平行四边形法则,表达的是向量加法运算的结合律,即: a+b=b+a ,如下图所示(图片来自:mathinsight):
这里写图片描述

与一个向量 a 大小相同,方向相反的向量,称为向量 a 的负向量,两者相加得到零向量,即:
a+(a)=0


向量夹角

两个非零向量的夹角规定为不超过 π 的角度 θ ,即
0θπ
如下图所示:
这里写图片描述
注意这个夹角的范围。当 θ=π2 称两个向量a与b垂直,当 θ=0π 时,称向量a与b平行。


向量点积(dot product)

向量点积,也称为向量的数量积,点积的结果是一个标量,其定义为:
A.B=|A||B|cosθ(1)
其中 θ 表示向量A和B之间的夹角。

向量点积的几何意义

要理解点积的几何意义,首先了解概念向量在轴上的投影(scalar projection ),这个投影计算得到一个标量。向量A在B上的投影定义为:
AB=|A|cosθ(2)
如下图所示(来自wiki dot product):
向量在轴上的投影
则1式可以写为:
A.B=|A|BA=|B|AB(3)

在空间几何中,例如n空间中,向量的坐标表示为:
A=(a1,b2,,cn) B=(b1,b2,,bn) ,
则两个向量的点积可以表示为:

A.B=a1b1+a2b2++anbn=i=1naibi(4)

向量点积的应用
向量点积的一个重要应用在于,可以快速求出两个向量的夹角余弦。
由公式1可知,两个向量的夹角余弦计算公式为:

cosθ=a.b|a||b|(5)

当a和b都是单位向量时,两单位向量的夹角余弦值为:
cosθ=a.b(6)
公式6能快速计算出两个单位向量的夹角余弦,在计算光照时经常使用。
另外当一个向量为单位向量时:
|a|2=aa(7)
这个公式也是经常使用的。


向量的叉积(cross product)

两个向量a和b的叉积,结果是一个向量 c=a×b ,c的方向垂直于a和b,它需要根据右手规则来确定(下文讲解);c的大小等于
|c|=|a||b|sinθ

  • 18
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值