现在开始学习3D基础相关的知识,本系列的数学相关笔记是基于阅读书籍《3D数学基础:图形与游戏开发》而来,实现代码使用AS3,项目地址是:https://github.com/hammerc/hammerc-Snake3D-as3https://github.com/hammerc/hammerc-Snake3D-as3-examples,而3D类库代码则是模仿Away3D的设计来编写的,实现上尽可能模仿Away3D,部分修改的地方学习笔记中会进行特别说明。

言归正传,先看看2D方面,对于2D的笛卡尔坐标系,一共有8种表示方式:

如果N表示y轴,E表示x轴,那么一般2D的坐标系选择的是第二行的第二列来表示(比如Flash中的坐标系),2D坐标系有一个特点,无论使用任何表示方式都可以通过旋转变成任意一种表示方式。

当我们再添加一个轴变成3D坐标系后呢?

左手坐标系和右手坐标系

在3D笛卡尔坐标系中,表示方式变成了48种,并且一种表示方式不能通过旋转任意变换为另一种表示方式了。

但是如果分为24种左手坐标系表示法和24种右手坐标系表示法,在左手或右手坐标系中,2D的定律任然管用,即无论使用任何表示方式都可以通过旋转变成任意一种表示方式。

下面我们看看图片:

书中使用的是左手坐标系,(表示方法是:+x,+y,+z分别指向右方,上方,前方),而Away3D也使用了左手坐标系,我的小类库也就一起使用左手坐标系了。

另外说一下,目前很火的Unity3D也是使用的左手坐标系,但左手和右手坐标系并无好坏之分,只是在计算机图形中一般使用左手坐标系,而在线性代数中更倾向于使用右手坐标系。

如果我们在处理一些运算或使用3D建模软件时,需要特别的看一下其使用的坐标系是否和我们使用的一致,否则会导致错误的结果。

当然左手坐标系和右手坐标系的转换也非常简单,一般来说,我们只要改变任意一个轴的方向为反向即可。

多坐标系

我们在实际使用时不会只使用一个坐标系,而通常会使用到多个坐标系,下面我们来具体的看看:

坐标系嵌套

我们可以从2D空间开始看,在Flash的2D显示列表中是呈现一种树形的结构,每个显示对象都会有一套自己的坐标系,这称为坐标系嵌套,那么在3D中也是一样的情况。

世界坐标系

世界坐标系表示当前空间中最根部的坐标系,可以理解为flash2D中的stage或root对象,可以将世界坐标系看做绝对坐标系。

物体坐标系

即每个显示对象的坐标系,可以看做本地坐标系或相对坐标系。简单的来说,如果在世界坐标系中有一个人,我们叫他“向前走”是按他的本地坐标系来处理,这个人面向的方向不同,其行走的方向就不同,但是对他来说都是向前走,而如果叫他“向东走”,则是按世界坐标来处理,无论这个人面向的方向如何,都应该是走向世界坐标系的东方。

摄像机坐标系

摄像机坐标系可以看做一种特殊的物体坐标系,摄像机要解决的问题是如何把3D空间中的物体正确的显示到屏幕(2D空间)上。

惯性坐标系

惯性坐标系是一种辅助坐标系,其目的是用来简化两个坐标系之间的转换。惯性坐标系总是平行于世界坐标系,即其只表示物体坐标系相对于世界坐标系的平移,而不管物体坐标系的旋转,将多个操作进行简化。

【3D研发笔记】之【数学相关】(一):坐标系的更多相关文章

  1. Python学习笔记17:标准库之数学相关(math包,random包)

    前面几节看得真心累.如今先来点简单easy理解的内容. 一 math包 math包主要处理数学相关的运算. 常数 math.e   # 自然常数e math.pi  # 圆周率pi 运算函数 math ...

  2. DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析

    DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析 彭会锋 本篇主要针对不太熟悉的TZ 故障捕获 和 DB 死区产生两个子模块进行学习研究 感觉TI的寄存器命名还是有一定规律可循的 SEL ...

  3. codeforces 687B - Remainders Game 数学相关(互质中国剩余定理)

    题意:给你x%ci=bi(x未知),是否能确定x%k的值(k已知) ——数学相关知识: 首先:我们知道一些事情,对于k,假设有ci%k==0,那么一定能确定x%k的值,比如k=5和ci=20,知道x% ...

  4. [自用]多项式类数学相关(定理&证明&板子)

    写在前面 由于上一篇总结的版面限制,特开此文来记录 \(OI\) 中多项式类数学相关的问题. 该文启发于Miskcoo的博客,甚至一些地方直接引用,在此特别说明:若文章中出现错误,烦请告知. 感谢你的 ...

  5. [总结]数论和组合计数类数学相关(定理&证明&板子)

    0 写在前面 0.0 前言 由于我太菜了,导致一些东西一学就忘,特开此文来记录下最让我头痛的数学相关问题. 一些引用的文字都注释了原文链接,若侵犯了您的权益,敬请告知:若文章中出现错误,也烦请告知. ...

  6. Irrlicht 3D Engine 笔记系列 之 自己定义Animator

    作者: i_dovelemon 日期: 2014 / 12 / 17 来源: CSDN 主题: Custom Animator, Referenced count 引言 在昨天的文章<Irrli ...

  7. [总结]多项式类数学相关(定理&证明&板子)

    目录 写在前面 前置技能 多项式相关 多项式的系数表示 多项式的点值表示 复数相关 复数的意义 复数的基本运算 单位根 代码相关 多项式乘法 快速傅里叶变换 DFT IDFT 算法实现 递归实现 迭代 ...

  8. [总结]其他杂项数学相关(定理&证明&板子)

    目录 写在前面 一类反演问题 莫比乌斯反演 快速莫比乌斯变换(反演)与子集卷积 莫比乌斯变换(反演) 子集卷积 二项式反演 内容 证明 应用举例 另一形式 斯特林反演 第一类斯特林数 第二类斯特林数 ...

  9. Java.util.Math类--数学相关的工具类

    Math类--数学相关的工具类 java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作. public static double abs(double ...

随机推荐

  1. 面试常考的数据结构Java实现

    1.线性表 2.线性链表 3.栈 4.队列 5.串 6.数组 7.广义表 8.树和二叉树 的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒. 二叉树的性质: :在二叉树的第 i 层上至多有2 ...

  2. 分布式搜索Elasticsearch——QueryBuilders.matchPhrasePrefixQuery

    注:该文项目基础为分布式搜索Elasticsearch——项目过程(一)和分布式搜索Elasticsearch——项目过程(二),项目骨架可至这里下载. ES源代码中对matchPhrasePrefi ...

  3. WCF的通信

    [ServiceContract]    public interface IContractDemoOne    {        [OperationContract(IsOneWay=true) ...

  4. itoa函数的实现(不同进制)

    2013-07-08 17:12:30 itoa函数相对于atoi函数,比较简单,还是要注意考虑的全面. 小结: 一下几点需要考虑: 对负数,要加上负号: 考虑不同进制,根据要求进行处理:对不同的进制 ...

  5. 音频(3)Android TTS技术支持朗读英文

    Android对TTS技术的支持 Android 1.6开始支持TTS(Text To Speech)技术,通过该技术可以将文本转换成语音.目前2015-09-06只支持朗读英文. TTS技术的核心是 ...

  6. Struts2国际化文件乱码解决

    方法1:使用native2ascii进行编码转换 代码如下: native2ascii -encoding UTF-8 GlobalMessages.properties NewGlobalMessa ...

  7. 函数fsp_alloc_seg_inode

    从inode page中申请inode entry inode = fsp_alloc_seg_inode(space_header, mtr); /************************* ...

  8. [原]Unity3D深入浅出 - 认识开发环境中的Component(组件)菜单

    Component(组件)是用来添加到GameObject对象上的一组相关属性,本质上每个组件都是一个类的实例,比如在Cube上添加一个Mesh网格,即面向对象的思维方式可以理解成Cube对象里包含了 ...

  9. mysql中php生成唯一ID

    <?php //uniqid官方手册 function create_guid($namespace = '') { static $guid = ''; $uid = uniqid(" ...

  10. 探秘Java虚拟机——内存管理与垃圾回收

    本文主要是基于Sun JDK 1.6 Garbage Collector(作者:毕玄)的整理与总结,原文请读者在网上搜索. 1.Java虚拟机运行时的数据区 2.常用的内存区域调节参数 -Xms:初始 ...