3D游戏基础 空间几何(一) 向量与顶点

来源:互联网 发布:centos没有vim 编辑:程序博客网 时间:2024/05/11 22:10

初学3D时,一个概念让我困扰许久:什么是顶点,什么是向量??

在程序中,顶点和向量都用同一个类型来表示,甚至跟别人讨论是,这二者也会混用,所以初学时就搞得云里雾里的。

事实上,顶点和向量是不同的两个概念。

顶点:表示空间中的位置信息,即 x, y, z 坐标,常用一个三元组 (x, y, z)表示,在变换是可能被扩展为齐次坐标(x,y,z,w), 这时w只是为了方便做矩阵运算而扩展的,通常w为1. 在变换后,可能w会变成非 1 值,这时,就需要做规范化动作,即 (x/w, y/w, z/w, w/w),这个动作的几何意义是将 4D 的齐次空间变换倒3D空间。这类似于,将3D空间的坐标(x, y, z)中某一分量置1,就变换到2D的平面空间一样。顶点可以做平移、旋转、缩放变换。

向量:也是一个三元组 (x, y, z),但是它表示的是一个方向。即从 原点 到 (x, y, z)的方向。它具有长度和方向属性,没有位置属性,所以,它可以拥有很多 平行的等量。它的齐次坐标(x,y,z,w)中,w取0,这时因为取0时,可以对这个坐标做旋转和缩放变换,不能做平移变换。因为向量本身没有位置属性,所以,对它做平移变换是无意义的。

Tips: 一般变换矩阵是 旋转变换矩阵(分为x, y, z轴3个不同矩阵)、缩放矩阵、平移矩阵 的复合矩阵。要复合出变换矩阵,就是按希望的变换顺序将 各个矩阵乘起来。而这个复合矩阵是一个 4 x 4矩阵,要使这个矩阵在对顶点和向量变换时有效,就必须将他们扩展到齐次空间。 

by: loo.tam@gmail.com

原创粉丝点击