`
macken
  • 浏览: 346754 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

游戏中的基本数学概念--矩阵的应用

    博客分类:
  • game
 
阅读更多

         前面提到过在一个游戏中可能应用到多个坐标系. 当遇到改变坐标系的时候就牵涉到点的位置的改变 (相对于新的原点和标准方向) 和矢量方向的改变 (相对于新的标准方向) . 我们称这种操作为坐标变换. 在图形模块中, 我们经常需要进行坐标变换. 从模型空间 (Model Space) 到全局空间 (World Space) 再到摄影机空间 (Camera Space或Eye Space), 最后到单位设备空间 (Normalized Device Space) 都牵涉到坐标的变换. 这些都是图形模块中的标准变换, 是必不可少的. 另外在计算视觉平截体 (View Frustum) 的时候, 我们还需要进行反向变换 (一般从单位设备空间变换到全局空间). 再有在计算一些高级特性 (例如阴影渲染)时, 一般都少不了作坐标变换. 所以掌握好它对游戏编程, 特别是图形编程非常重要. 说了这么多, 到底是如何实现坐标变换的呢? 这里我们就要用到矩阵了.

          从数学原理上, 矩阵代表了从一个线性空间到另一个线性空间的变换. 它可以很方便地应用在游戏的坐标变换中. 我们的游戏空间是三维空间. 3*3 的矩阵可以操作三维矢量从一个坐标系变换到另一个坐标系. 对点来说情况要复杂一些, 我们通常利用同源坐标 (Homogeneous Coordinate) 的概念利用一个 4*4 的矩阵对点和矢量同时进行操作. 同源坐标是一个巧妙而又简单的方法. 它的应用简化了图形的编程, 特别是简化了图形加速硬件的复杂度. 实际上图形卡的指令就是根据同源坐标的计算来设计的. 所以我们在使用 OpenGL 或 Direct3D API 的时候, 可以发现使用的都是 4*4 的矩阵.

         在这里我尝试不使用太多的数学知识来解释矩阵是怎样进行坐标变换的, 毕竟本网站的目的在于传播游戏知识而非数学知识. 从基本数学概念上来说, 一个坐标系对应了一个仿射空间 (Affine Space) , 当矢量从一个坐标系变换到另一个坐标系时要进行线性变换 (Linear Transformation). 对点来说, 要进行仿射变换 (Affine Transformation). 这就是我们利用同源坐标的理由. 它能在对矢量进行线性变换的同时对点进行仿射变换. 坐标变换的基本操作就是将变换矩阵乘以矢量或点, 以得到变换后的矢量或点. 其基本公式如下

v' = Mv

       以上公式中, v为矢量在原坐标系中的表示, v'代表该矢量在新坐标系中的表示. M为转换矩阵. 对点也有相同的方法 (在同源坐标中). 所以对坐标变换来说, 关键就是决定这个转换矩阵. 对此, 我们有一简单的方法.

假设我们有两个坐标系¼¼'. 坐标系¼的标准矢量 i, j, k 对应于坐标系¼'的矢量是 u' = < u'x, u'y, u'z >, v' = < v'x, v'y, v'z >, w' = < w'x, w'y, w'z >. 我们的转换矩阵将是:




应用在同源坐标系中的4*4矩阵将是:




对坐标系¼中的任意矢量v = < a, b, c > 来说, 它在坐标系¼'中对应的矢量为:



 

对点来说, 情况要复杂一点. 但也并不难太多. 我们只是要多考虑两个坐标原点的差距. 如果坐标系¼的原点O对应于坐标系¼'中的点是P = < x, y, z >, 那么点的转化矩阵N为:



 

对坐标系¼中的任意点Q = < a, b, c >来说, 它在坐标系¼中对应的点Q'为:



 

矩阵N对点提供了仿射变换. 它同时能对矢量提供线性变换如下:




        从上可见, 矩阵N能提供给矢量与矩阵M相同的线性变换. 所以矩阵N能对矢量与点进行坐标变换. 它就是我们寻找的坐标系之间的变换矩阵. 一个简单的理解方式是把转换矩阵想象成坐标系之间的差异. 一个坐标系里的矢量或点, 加上坐标系之间的不同就得到了另一个坐标系的矢量或点.

        我在上面对矩阵与坐标变换的关系作了一些说明. 要掌握矩阵在三维图形中的应用我们还需要了解矩阵的加法, 乘法, 转置矩阵 (Transpose Matrix) 和逆矩阵 (Inverse Matrix)的计算, 以及矩阵拆分 (Matrix Decompose) 的知识. 这些都是基本的数学知识并在很多图形学著作中的有描述. 不懂的读者可以考虑一读.

        矩阵在图形模块中大量应用. 但它在游戏中的应用并不仅仅局限在图形模块中. 物理模拟 (Physics Simulation) 也应用到了矩阵的知识.

我在这篇文章中试图对矩阵和它在游戏中的应用作一个简单的描述. 对没有线性代数基础的读者来说, 这可能会造成理解上的困难. 如果有读者在读完文章后不能理解所阐述的内容, 请给我来信说明. 我会考虑从更基本的数学理论出发再写一些. 矩阵对三维游戏特别是图形模块具有根本的重要性, 一定要从概念上理解它.

转载自:http://www.gametechzone.net/index.php?option=com_content&task=view&id=30&Itemid=48

  • 大小: 3.2 KB
  • 大小: 4.8 KB
  • 大小: 9.6 KB
  • 大小: 5 KB
  • 大小: 10.2 KB
  • 大小: 9.8 KB
分享到:
评论

相关推荐

    D-H转换矩阵介绍及应用举例

    #### 一、运动学基本概念 ##### 1. 正运动学(Forward Kinematics) 正运动学是研究如何根据给定的关节变量(Joint Variables),计算出机器人末端执行器的位置和姿态(Position & Orientation)。在机器人学中,正...

    矩阵分析-同济大学应用数学系

    ### 矩阵分析知识点概览 #### 一、矩阵分析概述 ...通过本书的学习,不仅可以掌握矩阵的基本理论,还能了解到它们在各个学科中的实际应用,对于提升学生的数学素养和解决实际问题的能力有着重要的作用。

    2.1-矩阵的概念----2.2矩阵的运算.ppt

    在数学和线性代数中,矩阵是一种基本的数学对象,用于表示和操作多变量的系统,如线性方程组。本节将详细介绍矩阵的概念及其运算。 矩阵是由m行n列排列的数构成的矩形数组,通常用大写字母A、B、C等表示。例如,一...

    选修4-2+矩阵与变换.pdf

    6. 矩阵应用实例: - 矩阵在计算机图形学中广泛应用于变换图形的位置、大小和方向。 - 在物理学中,矩阵用于描述系统状态的演化。 由于文档内容包含了很多OCR识别错误,无法直接提供精确的数学例题和完整的数学...

    论文研究-S-粗信息矩阵与它的动态特征.pdf

    粗信息矩阵是一个相对新颖的概念,可能是结合了粗糙集理论和信息矩阵理论的一种新型数学工具。从标题可以推断,本文旨在详细探讨S-粗信息矩阵的构建、性质以及它在研究系统动态特征上的应用。 【描述】:"提出了S-粗...

    基础数学---计算机类研究人员的基础2009-05

    ### 基础数学知识点概览 #### 一、初等代数部分 **数的运算律** - 加法交换律:\(a + b = b + a\) - 加法结合律:\(a + (b + c...这些知识点不仅有助于理解复杂的数学原理,也是进一步学习高级数学和应用数学的基础。

    研究生期末考试-三峡大学矩阵论试卷

    在三峡大学的研究生矩阵论考试中,除了这些基本概念和定理,还可能涉及更深入的主题,如二次型、厄米矩阵、正交矩阵、奇异值分解、Jordan分解等。学生需要对这些概念有扎实的理解,并能够灵活运用到具体问题中去。...

    考研数学--必备手册(公式.概念.松记忆)--蔡子华

    - **微积分**:包括极限、导数、积分、微分方程等基本概念及其应用。掌握这些基础理论是解决复杂问题的关键。 - **线性代数**:矩阵运算、向量空间、特征值与特征向量、线性变换等。线性代数在现代数学中占据核心...

    数学-矩阵分析-线性代数-矩阵分解

    【矩阵分解】是线性代数中的核心概念,它通过将一个矩阵转化为多个特定结构的矩阵的乘积,从而简化了对矩阵的操作和理解。在实际应用中,矩阵分解广泛应用于数值计算、图像处理、机器学习等多个领域。本文将探讨矩阵...

    高中数学 第八课时:矩阵的乘法的概念课件 苏教版选修4-2数学知识.ppt

    总结,本课件的内容主要涉及矩阵如何表示和组合几何变换,矩阵乘法的规则和特性,以及矩阵乘法在几何变换中的应用,这些都是高中数学选修4-2中的重要概念。理解并掌握这些知识点对于解决涉及几何变换和矩阵运算的...

    北京大学数学丛书-矩阵计算的理论与方法

    1. **矩阵的基本概念**:矩阵是由有序数组构成的矩形阵列,其元素可以是实数、复数或其他数学对象。矩阵的大小由行数和列数决定,通常表示为m×n矩阵。矩阵的加法、减法、标量乘法和矩阵乘法是矩阵运算的基础。 2. ...

    3D 数学库-矩阵 向量 四元数

    在计算机科学领域,尤其是计算机图形学中,3D数学库是不可或缺的一部分,它涉及到的核心概念主要包括矩阵、向量和四元数。这些概念是构建3D世界、进行几何变换和动画制作的基础。下面将详细解释这三个核心概念及其在...

    数学建模 数组和矩阵

    - **向量(矩阵)**:这是一个严格的数学概念,涉及到线性代数的基础理论,用于描述空间中的向量以及它们之间的关系。例如,一维数组在数学上可以被视为向量,而二维数组则可以视为矩阵。 - **数组**:这是计算机科学...

    A俄罗斯数学教材选译-矩阵论(下)+矩阵论(上)-甘特马赫尔著_柯召译(Dir).rar

    《矩阵论》是数学领域中一个重要的分支,主要研究矩阵的性质、运算及其在各种数学问题中的应用。甘特马赫尔(Gantmacher)的著作被广泛视为该领域的经典文献,由柯召教授翻译成中文,为中文读者提供了宝贵的资源。本...

    例5-8转置矩阵.zip

    转置矩阵是指将一个矩阵的行变成列,列变成行的过程,这在计算机科学和数学中有广泛应用,例如在图像处理、数据分析和机器学习算法中。 标题"例5-8转置矩阵.zip"暗示了这个压缩包可能包含一个示例,该示例是关于...

    应用数学基础-线性代数课后习题答案(曹贤通)第一章

    《应用数学基础-线性代数》第一章的内容主要围绕矩阵的分块运算和克拉默法则展开,涵盖了矩阵乘法、逆矩阵以及线性方程组的解法。 1. **矩阵的分块运算**: - 矩阵的分块乘法遵循特定规则,例如在习题1.7中,通过...

    工程矩阵理论.pdf

    综上所述,工程矩阵理论是一门既基础又实用的学科,它不仅涉及矩阵的基本概念和运算,还包括矩阵理论的历史发展、应用领域以及标准形理论等内容。通过对这些知识点的学习,可以更好地理解和应用矩阵在不同领域的实际...

    C#实验--- A.3 矩阵并行计算练习

    首先,了解矩阵的基本概念是必要的。矩阵是由若干行和列组成的数表,用于表示多个数学关系或数量之间的相互作用。在计算机科学中,矩阵运算广泛应用于图像处理、物理学模拟、机器学习等多个领域。 C#中的并行计算...

    工科研究生应用数学基础.pdf

    它旨在帮助初学者系统地掌握数学的基本概念和技术,并为他们在科学研究和技术开发中提供必要的数学工具。虽然提供的具体内容部分未能给出具体章节或知识点,但基于书名、描述及目标读者群体,我们可以合理推测并概括...

Global site tag (gtag.js) - Google Analytics