Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第一章:向量代数

学习目标:
  1. 学习如何使用几何学和数字描述 Vector;
  2. 学习 Vector 的运算方法及其在几何学上的应用;
  3. 熟悉在 DirectXMath library 中的 Vector 相关的类和函数。


1 向量

一个向量代表的是一个拥有大小和方向的量。类似力(拥有力的大小和方向)、位移(移动的方向和距离)、速度(速度的大小和方向)等,例如下图(图 1.1):
几何学中向量的表示
绘制向量的位置和向量本身无关,所以当且仅当两个向量的大小和方形相等时,两个向量相等;所以上图中a和b中的向量u和向量v相等。


1.1 向量和坐标系统

我们现在可以定义各种向量几何运算来解决对应的问题,但是因为计算机无法直接通过几何学计算向量,所以我们需要用数字来描述向量;
考虑到下图中的情况(图1.4),同一个向量在不同坐标系中会有不同的坐标变现:
向量在不同坐标系下
在计算机3D图形学中我们需要使用多个坐标系,我们要知道当前在哪一个坐标系下,并且熟悉坐标系之间的转换。


1.2 左手坐标系 VS 右手坐标系

Direct3D 使用的是左手坐标系:如果你使用你的左手指向 X轴正方向,然后向Y轴正方向弯曲你的手指,此时你的大拇指指向的就是Z轴正方向,如图1.5 所示(右手坐标系类似,只不过替换为右手)
左手坐标系和右手坐标系


1.3 基本向量运算

基本向量运算
我们也可以在坐标系中使用绘制的方法来表示:
坐标系中表示向量加减法



2 长度和单位向量

向量长度计算公式:
这里写图片描述
单位向量计算公式:
这里写图片描述
为了证明单位向量计算公式,我们可以计算单位向量的长度:
这里写图片描述



3 向量的点积

向量的点积是一种结果为数量值的乘法形式,其定义和计算公式为:
这里写图片描述
向量的点积的定义并没有提出明显的几何定义,利用余弦定理,我们可以找到几何关系:
这里写图片描述
这里写图片描述
如图1.9,θ是向量v和u的夹角,再根据上面的公式,我们可以得出向量点积的一些有用的几何属性:

  1. 当两个向量点积为0时,两个向量垂直;
  2. 当两个向量点积大于0时,两个向量夹角小于90度;
  3. 当两个向量点积小于0时,两个向量夹角大于90度。

3.1 向量的分解

如图1.10
这里写图片描述
给出向量v和单位向量n,使用点积公式求出向量p:
这里写图片描述
向量p也可以表示为: p = p r o j n ( v ) p = proj_n(v) p=projn(v),那么向量w = v - p
所以向量v就可以分解为: v = p + w = p r o j n ( v ) + p e r p n ( v ) v = p + w = proj_n(v) + perp_n(v) v=p+w=projn(v)+perpn(v)
如果向量n不是单位向量,那么可以提前把n标准化:
这里写图片描述


3.2 正交化

当一组向量相互之间都垂直,并且都是单位向量时,我们称他们为标准正交。在3D计算机图形学中,我们刚开始可能会有一组标准正交的向量,但是由于变量精度的问题,这些向量会在进行一系列计算后开始变得相互不垂直。所以我们的目标就是主要考虑在3D和2D情况下手动正交化。
我们先从2D开始,假设拥有向量 v 0 v_0 v0 v 1 v_1 v1,我们要将他们正交化为标准正交集 w 0 w_0 w0 w 1 w_1 w1;首先我们使 w 0 = v 0 w_0=v_0 w0=v0,然后修改 v 1 v_1 v1让它垂直于 w 0 w_0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值