zoukankan      html  css  js  c++  java
  • 3D数学读书笔记——多坐标系和向量基础

     

                                                 本系列文章由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)通过把物体打散成嵌套式地、按层次结构组织的对象序列,在物体运动时,动作就非常easy独立计算。并通过线性变换工具组合起来。

                    (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)百度百科                                                                             

  • 相关阅读:
    mybatis mybatis-generator 代码自动生成工具使用
    spring初步
    spring基于xml和注解配置事务
    强软弱虚四大引用
    线程通信的几种实现方式
    java8新特性之方法引用和构造器引用
    JAVA四大内置函数
    JAVA四大内置函数
    JSR303的使用
    设计模式之建造者模式
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6915439.html
Copyright © 2011-2022 走看看