本系列文章由birdlove1987编写,转载请注明出处。
文章链接: http://blog.csdn.net/zhurui_idea/article/details/24662453
基础:只要选定原点和坐标轴就能在任何地方建立坐标系
从问题问出发:为什么要使用多坐标系,一个3D系利用其无限延伸性,即可包含空间中所有的点,建立一个统一的世界,这样不是更简单吗?
实践中的答案:大量实践发现,在不同的环境下使用不同的坐标系更加方便(邓爷爷说过:实践是检验真理的唯一准绳!)
多坐标系的历史渊源:亚里士多德在他的著作《天文学》与《物理学》中提出了地心说,认为地球是宇宙的原点。阿里斯塔克斯提出了日心说,认为太阳
才是宇宙的原点。可以看到早在两千多年前多坐标的选择就是讨论的热点了。
1.使用多坐标系的原因是对某些信息智能在特定的上下文环境中获得。在计算机创建虚拟世界时,应该选择较为简单的坐标系,而不是较复杂的。所有的这些
坐标系都是平等的只是在某些环境中,有一些更合适而已。
2.一些计算机创建虚拟世界时有用的坐标系:
I. 世界坐标系:(1)世界坐标系是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考框架。另一方面,能够用世界坐标系描述其他坐标系的位置,而不
是用更大的、外部的坐标系来描述世界坐标系。
(2)从非技术意义上讲,世界坐标系所建立的正是我们所“关注”的最大的坐标系,所以世界坐标系不必是整个世界。
(3)世界坐标系也被广泛称作全局坐标系或者是宇宙坐标系。
II. 物体坐标系:(1)物体坐标系是和特定物体相关联的坐标系。每个物体都有它们独立的坐标系。当物体移动或改变方向时,和该物体相关联的的坐标系将随
之移动或改变方向。
(2)物体坐标系中也能像指定方向一样指定位置,即物体坐标系的相对位置。
(3)某些情况下,物体坐标系也被称作模型坐标系。因为模型定点的坐标都是在模型坐标系中描述的,有时候他也称作身体坐标系。(例如
游戏人物的模型绘制定位)。
III.摄像机坐标系:(1)摄像机坐标系适合观察者密切相关的坐标系(一般就是游戏中的主视角)。
(2)摄像机坐标系和屏幕坐标系相似,差别在于摄像机坐标系处于3D空间中而屏幕坐标系在2D平面里。
(3)摄像机坐标系系中,摄像机在原点,x轴向右,z轴向前即朝向屏幕内测,y轴向上且不是世界坐标系的上方,而是摄像机坐标系的上方。
ps:使用的是左手坐标系(俺是左撇子—_—!嘿嘿!)。
IV. 惯性坐标系:(1)惯性坐标系,是在世界坐标系到物体坐标系的“中间件”。(转换模式:世界坐标系—> 惯性坐标系—>物体坐标系)。
(2)从物体坐标系转换到惯性坐标系只需要旋转,从惯性坐标系旋转到世界坐标系只需要平移。请对照下图自己进行测试!
V.嵌套式坐标系:(1)嵌套式坐标系描述的之一种关系,根据物体运动的复杂性,物体能在不同层次上分为许多不同的子空间。我们称子坐标系嵌入在父坐标系
中,这种坐标系的父—子关系定义了一种层次的或树状的坐标系。
(2)通过把物体打散成嵌套式地、按层次结构组织的对象序列,在物体运动时,动作就很容易独立计算,并通过线性变换工具组合起来。
(3)层次化的嵌套坐标系是动态的,能够以最方便于表达重要信息的方式经行组织。
再从问题出发:怎样在一个坐标系中描述另一个坐标系呢?
答案:坐标系位置的描述其实很直接的,所有做的一切就是描述原点的位置和坐标轴的方向。也就是说在建立多坐标系时,要同时确定这两项内容。
关于向量:(1)向量是2D、3D数学研究的标准工具。
(2)对于数学家而言,向量就是一个数字列表,对于程序员而言则是一种相似的概念——数组。
(3)区分向量和标量,向量是有方向的量,标量是没有方向的量。
1. 向量的维度:向量的维度就是向量包含的“数”的数目。向量可以有任意正整数维。游戏3D中主要讨论2维,3维和4维。
2. 向量的记法:(1) 用[ ]括起来,数字用逗号隔开如 [ 1 , 2 , 3 ] 在等式中通常省略逗号。
(2)水平书写的是行向量,垂直书写的是列向量。
(3)我们可以使用整数下标来引用向量的某个分量。用x,y代表2D向量的分量,x,y,z代表3D向量分量,x,y,z,w代表4D向量分量。
关于向量:(1)从几何意义上说,向量是有大小和方向的有向线段。
(2)向量的大小就是向量的长度也就是模,向量有非负的长度。
(3)向量的方向描述了空间中向量的指向。
1.向量的位置:向量其实没有位置,因为这个原因,所有能在图的任何地方表示,只要方向和长度的表示正确即可,我们经常会利用向量的这个优点,将向量
平移到图中更有用的位置。
2.向量的表达:(1)向量中的数表达了向量在每个维度上的有向位移。
(2)2D向量列出的是沿x坐标轴方向和y坐标轴方向的位移。
(3)3D包含了三个数 x,y,z 分别度量向量在 x,y,z轴方向上的位移。
ps:思考向量所代表的位移的一个好办法是将向量分解成与轴平行的分量,把这些分量的位移组合起来,就得到了向量作为整体所代表的的位移。
3. 向量与点:(1)点有位置,但点没有实际的大小和厚度(其实在光栅化的时候是有的),向量有大小和方向,但是没有位置。点描述位置,向量描述位移。
(2)我们可以通过向量坐标原点移动到某一点,从原点开始,按向量 [x,y] 所代表的的位移移动,总会到达点(x,y)所代表的的位置,也可以说
向量 [x,y] 描述了原点到点(x,y)的位移量。
(3)重要的是要理解点和向量在概念上完全不同,而在数学上确实等价的。如2D点有x,y表示,向量也一样。
ps:记得考研的时候张宇老师在视频里说过,线性代数研究的就是向量的关系,不过真的很喜欢向量,简单到位!
—End—
参考文献:(1)《3D Math Primer for Graphics and Game Development》
(2)百度百科
原文地址:http://blog.csdn.net/zhurui_idea/article/details/24662453