本系列文章由birdlove1987编写,转载请注明出处。
文章链接: http://blog.csdn.net/zhurui_idea/article/details/24601215
1.3D数学是一门和计算机几何相关的学科,计算几何则是研究用数值方法解决几何问题的学科。3D数学讲解如何在3D空间中精确度量位置、距离和角度。
2.在3D数学里使用最广泛的度量体系是笛卡尔坐标系统。(笛卡尔数学由法国数学家Rene Descartes发明,并以他的名字命名)
3.关于数的类型:实数包含有理数和无理数(如果用小数表示小数后面有无穷多位)。
实数数学被很多人认为是数学中最重要的领域之一,因为它是工程学的基础,人类使用实数创建了文明。
最酷的事情是有理数可数,而实数不可数。研究自然数和整数的领域称作离散数学,研究实数的领域称作连续数学。
(许多物理学家们都认为:实数只是一种错觉,因为宇宙是离散和有限的。)
4.c++提供的多种数据类型来描述3D虚拟世界,包括short,int,float和double。
short是16位整数,可以代表65536个不同的数值,虽然这个数很大,但是量度现实世界还是远远不够的。
int是32位整数,可以代表4,294,967,296个不同的数值。
float是32位有理数,可以代表4,294,967,296个数值。
double是64位有理数,与float类似。
5.为虚拟世界选择度量单位的关键是选择离散的精度。有一种错误的观点认为short、int是离散的,而float、double是连续的,而实践上这些数据类型都是离散的。
计算机图形学第一准则:近似原则 如果它看上去是对的它就是对的。(感觉应该叫计算机实现第一准则—_—!)
6.2D笛卡尔坐标系有以下两点定义:
A. 每个2D笛卡尔坐标系都有一个特殊的点,称作原点(Origin(0,0)),它是坐标系的中心。
B. 每个2D笛卡尔坐标系都有两条过原点的直线向两边无限延伸,称做轴(axis)。两个轴相互垂直。
笛卡尔坐标系特点:
A. 2D坐标空间是无限伸展的。
B. 坐标系中的直线没有宽度,坐标系中每个点都是坐标系的一部分。
7.2D笛卡尔坐标系:水平的轴称作X轴,向右为X轴的正方向,垂直的轴称作Y轴,向上为Y轴的正方向,这是表示2D坐标系的惯用法。(注意:名词“水平”和“垂直”实际上并不准确)。
8.如下图,无论我们为X轴和Y轴选择什么方向,总能通过旋转使X轴向右为正,Y轴向上为正。所有从某种意义上讲,所有的2D坐标系都是“等价”的。
ps:这种说法对3D坐标系是不成立的。
9.关于2D笛卡尔坐标系的其他一些概念:
A. 在2D平面中,两个数(x,y)就可以定位一个点,且2D坐标的标准表示法就是(x,y)。
B. (x,y)每一个分量都是到相应的轴的有符号距离,x分量表示该点到Y轴的“有符号距离”。同样Y分量表示该点到X轴的“有符号距离”。
ps:有符号距离是指在某个方向上距离为正,而在相反的方向上距离为负。
10.3D坐标系:我们需要用3个轴来表示三维坐标系,前两个轴称作X轴和Y轴,这类似于2D平面,但并不等同于2D的轴,第3个轴称作Z轴。(3各轴互相垂直)。
11.在3D中定位一个点需要3个数:x,y和z,分别代表该点到yz,xz和xy平面的有符号距离。
12.对于任意的3D坐标系,通过旋转我们只能使用个轴和目标相同,第三个轴总是和目标方向相反。
3D坐标系之间不一定是等价的。实际上,存在两种完全不同的3D坐标系:左手坐标系和右手坐标系。如果同属于左手坐标系或右手坐标系,则可以通过旋转来重合,否则不可以。
左手坐标系和右手坐标系没有好坏之分,在不同的研究领域和不同的背景下,人们会选择不同的坐标系。如果运用某种技术结果不对,那么很可能是弄错了坐标系类型。
ps:以后笔记里使用的都是左手坐标系,也就是左图中的坐标系。(本人刚好是左撇子,嘿嘿—_—!)。
参考文献:(1)《3D Math Primer for Graphics and Game Development》
(2)百度百科