DX11编程(二):向量代数
来源:互联网 发布:pdf分割软件 编辑:程序博客网 时间:2024/04/28 03:14
向量篇
计算机绘图、碰撞检测和物理模拟是现代视频游戏的基本组成部分,向量(vector)在这些领域中具有至关重要的作用。向量(vector)是一种同时具有大小和方向的物理量(quantity)。同时具有大小和方向的物理量称为向量值物理量(vector-valued quantity)。常见的向量值物理量有:力(在某个特定方向上施加一定的作用力——量值),位移(在某个净方向上移动一段距离),速度(速率和方向)。因此,向量可以用来表示力、位移和速度。有时我们也用向量来表示一个单个方向,比如玩家在3D游戏中的观察方向、多边形面对的方向、光线的传播方向以及从一个物体表面折回的反射光方向。
我们通过一个有向线段来表示向量,其中长度表示向量的大小,箭头表示向量的方向。向量所描绘的位置并不重要,改变向量的位置并不会影响向量的大小和方向(这是向量具有的两个属性)。也就是,当且仅当两个向量具有相同的长度和方向时,我们说这两个向量相等。其实,位置对于向量来说无关紧要,我们可以随便平移一个向量,但是不会改变该向量所表示的含义(因为平移即不会改变向量的长度,也不会改变向量的方向)。注意,我们可以平移u,使它与v重叠(反之亦然),由此使它们彼此难以区分——因为它们是相等的。
一、向量和坐标系
我们无法在计算机中以几何方式表示向量,我们必须寻求一种替代方案,以数字方式表示向量。所以我们在空间中引入了3D坐标系的概念,并将所有的向量尾部平移到坐标系原点(图1.2)。然后通过指定向量首部的坐标来表示一个向量,记作v= (x,y,z),如图1.3所示。现在,我们可以在计算机程序中用3个浮点数来表示一个向量了。
(要注意的是:不同的坐标系中,同一向量会有不同的坐标)
二、左手坐标系和右手坐标系
Direct3D使用所谓的左手坐标系(left-handed coordinate system)。假如你把左手手指指向x轴正方向,然后朝y轴正方向弯曲四指,大拇指就会指向z轴正方向。图1.5展示了左手坐标系和右手坐标系之间的区别。
三、 基本向量的运算
设u= (1,2,3)、v= (1,2,3)、w=(3, 0, −2)、k=2。则,
1.u+w= (1, 2,3) + (3, 0, −2) = (4, 2,1);
2.u=v;
3.u−v=u+ (−v) = (1,2,3) + (−1, −2, −3) = (0, 0,0) = 0;
4.kw=2(3, 0, −2) = (6, 0, −4)。
第3行例举了一个特殊的向量,称为零向量。零向量的所有分量均为零,它可以由0来表示。
四、向量的长度和单位向量
五、向量的点积
六、向量的叉积
七、向量和点
- DX11编程(二):向量代数
- DX11编程(三):矩阵代数
- DirectX 11游戏编程学习笔记之2: 第1章Vector Algebra(向量代数)
- DX11渲染引擎进展(二)
- 向量代数:向量加法、共线与共面
- Theano Tutorial文档翻译(二):代数
- 高等数学:第七章 空间解析几何(1)空间解析几何与向量代数 向量的加减法、数乘、坐标
- 【DX11习题学习二】第六章练习 Drawing in Direct3D(上)
- DX11编程(一):DX和Effect的基本配置和属性表配置
- 代数笔记-第三章 向量空间
- DX11编程之计算着色过滤器
- 向量代数:向量的内积和外积
- 支持向量机(二)
- 支持向量机(二)
- 支持向量机(二)
- 支持向量机(二)
- 支持向量机(二)
- 支持向量机(二)
- Android开发规范
- 3Sum(三数和)
- LibSVM 在matlab中的使用
- 学习笔记之iptables(二)
- Repeater01-Repeater数据展示
- DX11编程(二):向量代数
- java中String的常用方法
- 颜色值转换
- Django连接数据库
- webView操作HTML5页面的方法(例如:去掉网页中的广告)(一)
- MYSQL经典SQL之时长统计
- rails 代码结构详解
- XMLHttpRequest cannot load http://xxx. Response for preflight has invalid HTTP status code 404
- CSS3的REM设置字体大小:rem