3D游戏世界是由三维物体组成的,通过记录这些物体的位置(position)、定向(orientation)、比例(scale)等信息,把这些属性变换至屏幕空间,使得物体能够被渲染在屏幕上;通过不断改变物体的这些属性来产生动画效果。
笛卡尔坐标系
左手:x向左,y向上,z向里
右手:x向左,y向上,z向外
矢量(vector)指n维空间中包含模(magnitude)和方向的量。
点(point)是绝对的,矢量是相对的。
模(magnitude)是一个标量,代表矢量的长度。
矢量和标量的乘法:其效果为保留矢量的方向,同时缩放矢量的模。乘以-1则是把矢量的方向反转,也就是头尾互换。
矢量和矢量的加减:会得到一个新矢量,新矢量的每个分量为原先矢量个分量的和/差。
单位矢量和归一化
单位矢量是模(长度)为1的矢量。
归一化是将任意矢量的模变为1的过程,保留矢量的方向。
法矢量,某平面的法矢量(normal vector)是指某矢量垂直于该平面。一个平面可以用一个点和一个法矢量来定义。在三维图形中,经常使用法矢量计算光线和材质表面之间的夹角。
矢量和矢量的乘法:有多种乘法,游戏编程最常用的有点积和叉积。
点积(dot product),又称为标量