本系列文章由birdlove1987编写,转载请注明出处。

文章链接: http://blog.csdn.net/zhurui_idea/article/details/24662453

第一个知识点:多坐标系

基础:仅仅要选定原点和坐标轴就能在不论什么地方建立坐标系

从问题问出发:为什么要使用多坐标系。一个3D系利用其无限延伸性。就可以包括空间中全部的点,建立一个统一的世界,这样不是更简单吗?

实践中的答案:大量实践发现。在不同的环境下使用不同的坐标系更加方便(邓爷爷说过:实践是检验真理的唯一准绳!)

多坐标系的历史渊源:亚里士多德在他的著作《天文学》与《物理学》中提出了地心说,觉得地球是宇宙的原点。阿里斯塔克斯提出了日心说。觉得太阳

才是宇宙的原点。能够看到早在两千多年前多坐标的选择就是讨论的热点了。

                         

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh1cnVpX2lkZWE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="204" height="273">

1.使用多坐标系的原因是对某些信息智能在特定的上下文环境中获得。

在计算机创建虚拟世界时,应该选择较为简单的坐标系,而不是较复杂的。全部的这些

坐标系都是平等的仅仅是在某些环境中,有一些更合适而已。

2.一些计算机创建虚拟世界时实用的坐标系:

I. 世界坐标系:(1)世界坐标系是一个特殊的坐标系,它建立了描写叙述其它坐标系所须要的參考框架。还有一方面,可以用世界坐标系描写叙述其它坐标系的位置,而不

是用更大的、外部的坐标系来描写叙述世界坐标系。

(2)从非技术意义上讲,世界坐标系所建立的正是我们所“关注”的最大的坐标系。所以世界坐标系不必是整个世界。

(3)世界坐标系也被广泛称作全局坐标系或者是宇宙坐标系。

II. 物体坐标系:(1)物体坐标系是和特定物体相关联的坐标系。每一个物体都有它们独立的坐标系。当物体移动或改变方向时,和该物体相关联的的坐标系将随

之移动或改变方向。

(2)物体坐标系中也能像指定方向一样指定位置,即物体坐标系的相对位置。

(3)某些情况下,物体坐标系也被称作模型坐标系。由于模型定点的坐标都是在模型坐标系中描写叙述的。有时候他也称作身体坐标系。

(比如

游戏人物的模型绘制定位)。

III.摄像机坐标系:(1)摄像机坐标系适合观察者密切相关的坐标系(一般就是游戏中的主视角)。

(2)摄像机坐标系和屏幕坐标系相似,区别在于摄像机坐标系处于3D空间中而屏幕坐标系在2D平面里。

(3)摄像机坐标系系中,摄像机在原点。x轴向右,z轴向前即朝向屏幕内測,y轴向上且不是世界坐标系的上方。而是摄像机坐标系的上方。

ps:使用的是左手坐标系(俺是左撇子—_—!嘿嘿!)。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh1cnVpX2lkZWE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="466" height="441">

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:思考向量所代表的位移的一个好办法是将向量分解成与轴平行的分量,把这些分量的位移组合起来,就得到了向量作为总体所代表的的位移。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh1cnVpX2lkZWE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="341" height="353">

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

3D数学读书笔记——多坐标系和向量基础的更多相关文章

  1. 3D数学读书笔记——矩阵基础番外篇之线性变换

    本系列文章由birdlove1987编写.转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425 前面有一篇文章 ...

  2. 3D数学读书笔记——矩阵基础

     本系列文章由birdlove1987编写,转载请注明出处.    文章链接:http://blog.csdn.net/zhurui_idea/article/details/24975031   矩 ...

  3. 3D数学读书笔记——3D中的方位与角位移

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25339595 方位和角位移 ...

  4. 3D数学读书笔记——四元数

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25400659 什么是四元数 ...

  5. 3D数学读书笔记——向量运算及在c++上的实现

     本系列文章由birdlove1987编写.转载请注明出处.     文章链接: http://blog.csdn.net/zhurui_idea/article/details/24782661   ...

  6. 3D数学读书笔记——矩阵进阶

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25242725 最终要学习矩阵 ...

  7. 《玩转Django2.0》读书笔记-Django建站基础

    <玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...

  8. 《Essential C++》读书笔记 之 C++编程基础

    <Essential C++>读书笔记 之 C++编程基础 2014-07-03 1.1 如何撰写C++程序 头文件 命名空间 1.2 对象的定义与初始化 1.3 撰写表达式 运算符的优先 ...

  9. 3D数学学习笔记——笛卡尔坐标系

    本系列文章由birdlove1987编写.转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24601215 1.3D数学 ...

随机推荐

  1. 329 Longest Increasing Path in a Matrix 矩阵中的最长递增路径

    Given an integer matrix, find the length of the longest increasing path.From each cell, you can eith ...

  2. FFmpeg编译Android版本

    FFmpeg是很好用的一个音视频库,功能强大,但是用起来并不是很方便.之前一直不想用FFmpeg,因为感觉编译太麻烦,但是到了不得不用的时候了,没办法,参考了网上大神的方法,在这里自己也记录一下方便以 ...

  3. 转:java中static、final、static final的区别

    http://blog.csdn.net/qq1623267754/article/details/36190715 final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性 ...

  4. ElasticSearch-5.21安装

    环境 操作系统:Centos 6.5 X64 IP地址:192.168.56.100 JDK 环境: # java -version java version "1.8.0_121" ...

  5. 从JavaScript的单线程执行说起

    先看一段代码: 1 2 3 4 5 setTimeout(function(){     alert("a"); }, 0); while(1); alert("b&qu ...

  6. java_randomAccessFile类的使用

    RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件.RandomAccessFile支持随机访问文件,可以访问文件的任意位置 (1)java文件模型 在硬盘上 ...

  7. Java多线程学习笔记(一)——多线程实现和安全问题

    1. 线程.进程.多线程: 进程是正在执行的程序,线程是进程中的代码执行,多线程就是在一个进程中有多个线程同时执行不同的任务,就像QQ,既可以开视频,又可以同时打字聊天. 2.线程的特点: 1.运行任 ...

  8. C# invoke和begininvoke的用法

    namespace invoke和begininvoke的用法 { public partial class Form1 : Form { public Form1() { InitializeCom ...

  9. mybatis 项目配置

    第一:environments MyBatis 支持多个环境,可以任意配置: 第二:transactionManager MyBatis 支持两种类型的事务管理器:JDBC 和 MANAGED(托管) ...

  10. Java对象的创建及使用

    Java对象的创建及使用 对象是类的具体实例(instance),是真实存在的个体: