3D数学读书笔记——多坐标系和向量基础
本系列文章由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数学读书笔记——多坐标系和向量基础的更多相关文章
- 3D数学读书笔记——矩阵基础番外篇之线性变换
本系列文章由birdlove1987编写.转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425 前面有一篇文章 ...
- 3D数学读书笔记——矩阵基础
本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/24975031 矩 ...
- 3D数学读书笔记——3D中的方位与角位移
本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25339595 方位和角位移 ...
- 3D数学读书笔记——四元数
本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25400659 什么是四元数 ...
- 3D数学读书笔记——向量运算及在c++上的实现
本系列文章由birdlove1987编写.转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24782661 ...
- 3D数学读书笔记——矩阵进阶
本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25242725 最终要学习矩阵 ...
- 《玩转Django2.0》读书笔记-Django建站基础
<玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...
- 《Essential C++》读书笔记 之 C++编程基础
<Essential C++>读书笔记 之 C++编程基础 2014-07-03 1.1 如何撰写C++程序 头文件 命名空间 1.2 对象的定义与初始化 1.3 撰写表达式 运算符的优先 ...
- 3D数学学习笔记——笛卡尔坐标系
本系列文章由birdlove1987编写.转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24601215 1.3D数学 ...
随机推荐
- 题解报告:poj 3233 Matrix Power Series(矩阵快速幂)
题目链接:http://poj.org/problem?id=3233 Description Given a n × n matrix A and a positive integer k, fin ...
- 数据清洗——python定位csv中的特定字符位置
之前发过一篇关于定位csv中的特殊字符的,主要是用到了python的自带的函数,近期又遇到了一些新的问题,比如isdigit()的缺点在于不能判断浮点型,以及小数中有多个小数点的情况.发现还是正则表达 ...
- c/c++ 参数传递 - 数组
对于函数参数中的数组类型:传递的是数组地址,可以理解成传递的是对数组的引用.不是值传递,这是由C/C++函数实现机制决定的.一下三种函数生命完全等价: void func(int array[10]) ...
- scala 变量定义,基本操作符
scala是jvm语言,它将面向对象与函数风格结合的很好,它可以访问任何java类库并很好的结合使用. 它可以使程序更简单,同时可利用并发的威力. scala基本语法: package com.tes ...
- CDH5.7Hadoop集群搭建(离线版)
用了一周多的时间终于把CDH版Hadoop部署在了测试环境(部分组件未安装成功),本文将就这个部署过程做个总结. 一.Hadoop版本选择. Hadoop大致可分为Apache Hadoop和第三方发 ...
- Java学习笔记_网络(2)
单向的客户端发送服务器端接收并显示,没有使用多线程 import javax.swing.*; import java.awt.*; import java.io.*; import java.net ...
- Java&Xml教程(三)使用DOM方式修改XML文件内容
DOM解析方式也可用于修改XML数据,我们可以使用它完成新增元素.删除元素.修改元素值.修改元素属性等操作. 我们的XML文件,内容如下: employee.xml <?xml version= ...
- Linux学习(一)--基本概念
一.Linux概述 Linux是一款全球性的免费的开源的操作系统平台,其特点是实现了多任务多用户处理,主要是依赖内核kernel shell,且占用资源少 (最小配置只要4Mb内存就能运行). 百度百 ...
- String数据类型转换
String是final类,提供字符串不可修改.强制类型转换,String类型无处不在.下面介绍一些常见的String数据类型转换. String数据类型转换成long.int.double.floa ...
- Codeforces_731F_(前缀和)
F. Video Cards time limit per test 1 second memory limit per test 256 megabytes input standard input ...