我们所感知到的世界是一个几何的世界, 物理的世界. 从感观上我们很容易描述这个世界, 但是计算机不能接受这种描述方式. 计算机需要的是更加抽象的表达方式. 长期以来, 数学家发展出了用数学概念来抽象出现实世界的方式. 计算机接受的就是这种数学的方式. 这篇文章是 "游戏中的基本数学概念" 的第一篇, 它要介绍的是构成我们三维游戏世界的基本元素--矢量与点. 在游戏中, 矢量 (Vector> 和点 (Point) 是构成我们三维世界的基本元素. 其它元素, 从简单的线 (Line), 面 (Plane), 到复杂的视觉平截体 (View Frustm) 都是由矢量和点组合而成的. 要正确有效地编程, 理解相关的知识非常重要. 在游戏中矢量经常应用在两个方面. 第一个是用来表示方向. 例如表示三角形的法线 (Normal) 方向. 另一个例子是用矢量表示游戏中摄像机 (Camera) 面对的方向. 矢量的第二个用处是用来描述变化. 在游戏中我们常常利用速度来计算物体位置的变化, 这个速度其实就是一种矢量. 图一所示就是一个矢量. 矢量有大小和方向. 矢量的大小很好理解, 它就是矢量的长度. 对三维空间矢量v = < x, y, z >而言: 矢量的方向也很好理解, 但它在程序中的描述要复杂一些. 矢量的方向可由矢量v本身描述, 但通常我们都用单位矢量来描述方向, 即 v = v / ||v||没有线性代数基础的读者可能会不能理解上面的描述. 我将从几何角度作进一步的分析. 从几何上来说, 矢量的箭头指向就是它的方向. 这虽然容易理解, 但是在程序中我们难以表达和保存这种概念. 我们需要更抽象的数学表达方法. 前面我们说了矢量本身就能描述方向. 那么矢量保存的 < x, y, z > 怎样和箭头的指向建立联系呢? 这时候矢量的点积 (Dot Product) 就派上了用场. u * v = ||u|| ||v|| cosá考虑u和v是两个用单位矢量表示的方向, 就有 ||u|| = ||v|| = 1.0.u * v = cosá -------- (1) 所以两个单位矢量的点积就描述了这两个矢量之间的夹角. 在三维游戏中, 我们经常定义三个标准方向i: <1, 0, 0>, j: <0, 1, 0>, k: <0, 0, 1>. 然后任意矢量的方向都能用它与这三个标准方向的点积来表示. 例如对矢量u = < ux, uy, uz > 而言, 由公式(1)我们可以得到: cosá = u * i = ux * 1 + uy * 0 + uz * 0 = ux从以上推导可知, ux反映的是矢量u与标准矢量i的夹角. 同理, 我们可以得出uy和uz反映的是矢量u分别与标准矢量j与k的夹角. 这样一来, 我们得出了结论, 矢量的方向是相对于标准矢量的. 在我们确定一组标准矢量后 (对三维空间来说, 一组意味着三个标准矢量) , 任意矢量的方向都能用它与这三个标准矢量的夹角来表示. 点是构成三维游戏世界的另外一个要素. 它比矢量更容易理解. 点在游戏中被用来标识位置. 三维模型由许多的三角形组成. 每个三角形由三个点来标识三角形三个顶点的位置 (具体见"三维模型--简单的三维模型"). 物体在空间中的位置也要由点来标识. 与矢量相似, 空间任意一点的位置也是相对的. 它们的位置都是相对于空间中某一参照点的位置. 这个参照点就叫做原点 (Origin). 原点的选择与标准方向一样也是可变的. 一个原点与一组标准方向一起决定了一个坐标系, 如图二 (在游戏中通常用到的都是这种坐标系, 称为笛卡尔坐标系). 坐标系确定以后, 空间中的任意一点都能用该坐标系的原点和标准方向唯一决定, 表达的方式是一组实数 < x, y, z >. 它和空间中的点一一对应. 矢量的确定不需要原点的概念, 空间中的任意矢量通过一组标准方向就能唯一决定. 表达的方式也是一组实数 < x, y, z >. 在游戏中点与矢量通常都有相同的表示方式 ( < x, y, z > ), 但它们是完全不同的两个概念. 对它们的操作也不尽相同. 认识到这一点对正确的编程和使用标准的库函数都非常重要. 例如: 对两点来说, 它们之间有距离的概念, 但对矢量而言, 距离毫无意义. 同样, 对点来说, 很难想象夹角有什么意义, 但对矢量而言, 这是它的基本意义. 这些都是不难理解的. 下面给出点和矢量之间的合法运算. 1) 如果我们有两点P, Q, 那么 u = P - Q代表了一个矢量. 它的大小是P, Q两点之间的距离, 方向则是从Q点指向P的方向. 2) 如果我们有一点P和一个矢量u, 那么 Q = P + u标识了一个点Q. Q点在空间的位置是P点沿着u矢量的方向移动||u||单位 (u矢量的长度) 得到的位置. 需要指出的是: 在一个游戏中常常会应用到多个标准方向和原点. 不同的标准方向和原点的选择对应了不同的坐标系. 这样就涉及到不同坐标系之间的变换. 这是掌握三维游戏编程的又一个重点 |
- 浏览: 346745 次
- 性别:
- 来自: 北京
最新评论
-
白色蜻蜓:
...
(转载)新浪微博错误提示代码 -
crzdot:
我也是用ultroiso做的mini启用盘,然后再把iso拷到 ...
centos6.4安装 -
k496229870:
...
libgdx学习之Camera -
DiaoCow:
蛮不错的。
redis命令思维导图 -
kingdelee:
HTTPClient完胜?
URLConnection与HttpClient的对比
相关推荐
工科物理中的基础数学知识是矢量运算,它在描述物质结构、相互作用及其运动规律中扮演着关键角色。在物理学及工程学中,物理量分为标量和向量两种。标量有大小和单位,但没有方向,遵循代数运算法则。而向量(矢量)...
在《工程数学:矢量分析与场论》这本书中,读者可以期待学习到以下关键知识点: 1. 向量的基本概念:向量的定义、方向、长度,以及向量的加减、标量乘法和向量乘法。 2. 空间解析几何:平面和直线的方程,空间曲线...
### 基础数学知识点概览 #### 一、初等代数部分 **数的运算律** - 加法交换律:\(a + b = b + a\) - 加法结合律:\(a + (b + c) = (a + b) + c\) - 乘法交换律:\(ab = ba\) - 乘法结合律:\(a(bc) = (ab)c\) - ...
### 矢量分析与场论知识点概览 #### 一、基本概念 - **标量**:只有大小没有方向的量,例如温度、质量、体积等。在电磁理论中,标量包括电量、电位、电阻等。 - **矢量(向量)**:既有大小又有方向的量,如力、...
GIS数据转换器(矢量-矢量)转出的城市农村社区地图
《天地图——矢量数据在ArcGIS中的应用详解》 天地图,作为中国国家地理信息公共服务平台的重要组成部分,提供了一系列丰富的地图服务,包括影像、地形、矢量等。本篇文章将详细探讨“天地图--矢量.zip”这个压缩包...
石家庄-城市-建筑轮廓-矢量-SHP 石家庄-城市-建筑轮廓-矢量-SHP 石家庄-城市-建筑轮廓-矢量-SHP 石家庄-城市-建筑轮廓-矢量-SHP 石家庄-城市-建筑轮廓-矢量-SHP 石家庄-城市-建筑轮廓-矢量-SHP
珠海-城市-建筑轮廓-矢量-SHP 珠海-城市-建筑轮廓-矢量-SHP v珠海-城市-建筑轮廓-矢量-SHP 珠海-城市-建筑轮廓-矢量-SHP 珠海-城市-建筑轮廓-矢量-SHP 珠海-城市-建筑轮廓-矢量-SHP
工程数学-《矢量分析与场论》课后答案.doc
人工智能-机器学习-矢量喷管非定常流场计算与动态数学模型研究 本文主要研究矢量喷管非定常流场计算和动态数学模型的建立,以提高战斗机的敏捷性和飞行品质。矢量喷管是实现推力矢量技术的关键部件,建立其数学模型...
矢量是数学中的一个重要概念,它可以分为有序矢量和无序矢量。在数学中,我们经常需要对矢量之间的关系进行分析,包括求交集、并集和差集等运算。下面将对这些概念进行具体解释。 1. 交集: 矢量的交集是指两个矢量...
在IT领域,尤其是在图形学、物理模拟以及游戏开发等应用中,矢量数学扮演着至关重要的角色。"1.4第四节-矢量.ppt"的内容主要介绍了矢量的基本概念和运算规则,这对于理解计算机科学中涉及三维空间的计算非常重要。 ...
矢量图形是一种通过数学方程和路径来描绘图像的图形格式,与传统的像素图形相比,它的显著优势在于能够进行无限放大而不会失真,这使得矢量图形非常适合创建高分辨率的图形元素,比如网站背景、海报设计、标志以及...
矢量图是一种基于数学描述的图像格式,它使用点、线、曲线等基本图形元素来构建图像,因此可以无限放大而不失真,非常适合用于高清显示和打印。在"领克03-矢量图.rar"这个压缩包中,包含了不同颜色版本的领克03车型...
* 兰州市-矢量地图
PPT图标素材大全-矢量图标PPT图标素材大全-矢量图标PPT图标素材大全-矢量图标
矢量磁滞数学模型是研究磁性材料在磁场作用下磁化过程的一种数学方法,它考虑了磁场强度与磁化强度之间的空间角度差异,而传统的标量磁滞模型则假设两者在同一位置方向相同。这种模型在材料特性模拟领域具有重要意义...
矢量图是由一系列数学上的点和线构成的,这些点和线称为矢量或路径。每个矢量都有自己的属性,如颜色、形状、轮廓和位置,这使得它们能够独立于背景和其他图形元素进行编辑。因此,用户在PPT中可以灵活地调整矢量图...
2. **图形绘制与编辑**:实现矢量图形的绘制,如线条、曲线、形状(如圆形、矩形、多边形)等,需要理解贝塞尔曲线、路径和描边填充等概念。用户应能自由移动、缩放、旋转图形。 3. **图层管理**:支持多个图层,...
《力学中的数学方法-张量》这一教学课件主要探讨了张量在力学问题中的应用,特别是关于矢量的协变导数以及二阶张量的协变导数,同时还涉及到了物理分量和弹性力学的基本方程。下面将详细阐述这些概念。 首先,矢量...