zoukankan      html  css  js  c++  java
  • 《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 表示向 “北”
  • 相关阅读:
    react 踩坑第一天
    vue-cli+axios+跨域
    vuex 进阶 mapState mapGetter mapActions mapMutations
    vue Bus
    各种html布局
    echarts柱状图设置渐变色
    html设置一个当前时间
    css设置字体渐变色
    C++中指针与引用详解
    go-admin 开源后台管理系统
  • 原文地址:https://www.cnblogs.com/bky-hbq/p/12675551.html
Copyright © 2011-2022 走看看