计算机图形学第一准则:近似原则如果它看上去是对的它就是对的
一、 1D数学
就是小时候学过的数轴概念
研究自然数和整数的领域称为离散数学,研究实数的领域称为连续数学
现实世界中使用的术语“实数”,通常是离散的意思。
3D虚拟世界的设计也是与现实世界相同的,要处理的是一系列离散和有限的事物,可以使用C++提供的多种数据类型来描述3D虚拟世界,包括short、int、float和double。这些数据类型都是离散的。
为虚拟世界选择度量单位的关键是选择离散的精度。
二、2D笛卡尔数学
我们上课学的坐标轴都是笛卡尔坐标系。
我们可以自定义坐标轴的x与y轴的方向。但是,无论我们为x轴和y轴选择什么方向,总能通过旋转使x轴向右为正,y轴向上为正。所以从某种意义上来说,所有2D坐标系都是“等价”的。
但是这种说法对3D坐标系是不成立的。
在2D笛卡尔坐标系中定位点
坐标系是一个精确定位点的框架。坐标的每一个分量都表达了该点与原点之间的距离和方位。确切地说,每个分量都是到相应轴的有符号距离
三、从2D到3D
把3D中的x轴、y轴等同于2D中的x轴、y轴是不准确的。
3D中,任意一对轴都定义了一个平面并垂直于第3个轴(如:z轴垂直于xy轴面、y轴垂直于xz轴、x轴垂直于yz轴)。
我们可以认为这3个平面是3个2D笛卡尔空间。则可以用xz平面来表示“地面”的2D笛卡尔平面。
在3D笛卡尔坐标系中定位点
在3D中定位一个点需要3个数:x、y和z,分别代表该点到yz、xz和xy平面的有符号距离
左手坐标系和右手坐标系
全面提到所有的2D坐标系都是“等价”的。但是在3D坐标系中却不成立。
传统的计算机图形学使用左手坐标系,而线性代数则倾向于使用右手坐标系。