《3D数学基础:图形与游戏开发》2.第2章 笛卡尔坐标系统

2.1 1D 数学

2.1.1 数学概念:自然数,整数,有理数,实数,以及它们之间的关系

  • 人们为了方便 “数羊” 而发明了自然数:“一头羊” 就对应数字 1,“两头羊”、“三头羊” 以此类推。同时,确定了 “零” 的概念(即没有羊)
  • 如果能卖掉一个你不存在的羊,就实际上是有 “负一”只羊,这也产生了整数:由上面的自然数和它们的相反数(负数)组成

  • 如果一个人很穷,那么这个人可能只买得起半只羊,甚至四分之一只羊,于是产生了分数的概念:由一个整数除以另一个整数形成,如 2/3,111/27。这些数称为有理数,也就是数轴上整数之间的空白。同时发明了小数点表示分数,如 3.145 代替 31415/10000

  • 日常生活中的某些数是无法用上面的有理数表示的,比如圆的周长与直径的比,也就是 \(\pi\) ,——小数点后需要无穷多位,由此就产生了实数。实数包含有理数和形如 \(\pi\) 这样的无理数

  • 研究自然数和整数的领域称为离散数学,研究实数领域的称作连续数学

2.1.2 编程语言中short、int、float、double几种数据类型之间的联系

  • 3D 虚拟世界的设计者需要处理的四一系列离散的和有限的事物,可以使用编程语言中提供的多种数据类型来描述 3D 虚拟世界,包括 short,int、float,double
  • short:16位整数,可以表示 65536 个不同的数值
  • int:32位整数,可以表示 4,294,967,296 个不同的数值
  • float:32位有理数,可以表示 4,29,4,967,296 个数值
  • double:64位有理数
  • 以上这些数据类型都是离散的
  • 为虚拟世界选择度量单位的关键是选择离散的精度

2.1.3 计算机图形学第一准则

  • 近似原则如果它看上去是对的它就是对的

2.2 2D 笛卡尔数学

2.2.1 2D 笛卡尔坐标系

  • 每个 2D 笛卡尔坐标系都有一个特殊的点,称为原点,是坐标系的中心

  • 每个 2D 笛卡尔坐标系都有两条过原点的直线向两边无限延伸,称为“轴”

  • 习惯/标准形式是,水平的轴称为 x 轴,向右为 x 轴的正方向,垂直的轴称为 y 轴,向上为 y 轴正方向

  • 可以根据自己的需要来决定坐标轴的指向,也可以决定轴的正方向

  • 2D 中有 8 种可能的轴的指向:

    • 无论如何选择 x 轴和 y 轴的方向,总能通过旋转使得 x 轴向右为正,y 轴向上为正,所以所有的 2D 坐标系都是“等价”的

2.2.2 用笛卡尔坐标(x,y)定位 2D 空间内的点

  • 为了在笛卡尔坐标系中定位点,引入了笛卡尔坐标的概念。
  • 在 2D 平面中,两个数(x,y)可以定位一个点,坐标的每个分量都表明了该点与原点之间的距离和方位:每个分量都是到相应轴的有符号距离
  • “有符号距离” 指的是在某个方向上距离为正,在相反方向上为负

2.3 从 2D 到 3D

2.3.1 第三个维度,第三个轴

  • 为了表示三维坐标系,引入第三个轴:z 轴。一般情况下,这三个轴相互垂直,即每个轴垂直于其他两个轴
  • 在 2D 平面中,指定 x 轴向右为正,y 轴向上为正为标准形式,在 3D 中没有标准形式

2.3.2 在 3D 笛卡尔坐标系中定位点

  • 在 3D 中定位一个点需要3个数:x,y 和 z,分别代表该点到 yz,xz 和 xy 平面的有符号距离

2.3.3 左手坐标系与右手坐标系

  • 无论任意 2D 坐标系,总能使其变换为标准形式,所以所有的 2D 坐标系都是 “等价” 的

  • 推广至 3D坐标系中是错误的:通过旋转只能使得两个轴和目标坐标系相同,第三个轴总是和目标方向相反

    • 原因在于,3D 坐标系之间不一定是等价的,存在着两种完全不同的 3D 坐标系:左手坐标系和右手坐标系
    • 如果同属左手或右手坐标系,那么可以通过旋转来重合,否则不可以
  • 判断坐标系的类型:右手螺旋定则即可

  • 左、右手坐标系可以相互转换,只需要翻转一个轴的符号即可。如果同时翻转两个轴的符号,结果和不翻转是一样的

2.3.4 本书的主要约定

  • 本书约定:使用左手坐标系,+x,+y,+z 分别指向右方、上方、前方
  • 当 “右” 和 “前” 不明确的时候(如:对于世界坐标系),以 +x 表示向 “东”,+z 表示向 “北”
posted @ 2020-04-10 19:18  nxgy  阅读(882)  评论(0编辑  收藏  举报