3D数学

作者: rogerwu1228 | 来源:发表于2017-09-12 10:56 被阅读30次

1, 向量

2, 矩阵

3, 欧拉角

4, 四元数

5, 坐标系变换

6, 齐次坐标与透视变换的推导

  • 齐次坐标

向量和点在同一个基下就有不同的表达:3D向量的第4个代数分量是0,而3D点的第4个代数分量是1。像这种这种用4个代数分量表示3D几何概念的方式是一种齐次坐标表示。
"齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。"-- F.S. Hill, JR

  • 透视变换

透视投影变换由两步组成:
1) 裁剪: 用透视变换矩阵把顶点从视锥体中变换到裁剪空间的CVV中
2) 透视除法: CVV裁剪完成后进行透视除法

  • 推导

http://blog.sina.com.cn/s/blog_74eb759d0100odej.html
http://blog.sina.com.cn/s/blog_74eb759d0100ogsd.html

7,仿射变换矩阵

计算机图形学中的应用非常广泛的变换是一种称为仿射变换的特殊变换,在仿射变换中的基本变换包括平移、旋转、缩放、剪切这几种

  • 绕X轴旋转

在三维场景中,当一个点P(x,y,z)绕x轴旋转θ角得到点P’(x’,y’,z’)。由于是绕x轴进行的旋转,因此x坐标保持不变,y和z组成的yoz(o是坐标原点)平面上进行的是一个二维的旋转,可以参考上图(y轴类似于二维旋转中的x轴,z轴类似于二维旋转中的y轴),于是有:
x′=x
y′=ycosθ−zsinθ
z′=ysinθ+zcosθ
写成(4x4)矩阵的形式 :


Snip20170914_5.png
  • 绕Y轴旋转

绕Y轴的旋转和绕X轴的旋转类似,Y坐标保持不变,除Y轴之外,ZOX组成的平面进行一次二维的旋转(Z轴类似于二维旋转的X轴,X轴类似于二维旋转中的Y轴,注意这里是ZOX,而不是XOZ,观察上图中右手系的图片可以很容易了解到这一点),同样有:
x′=zsinθ+xcosθ
y′=y
z′=zcosθ−xsinθ
写成(4x4)矩阵的形式 :


Snip20170914_6.png
  • 绕Z轴旋转

与上面类似,绕Z轴旋转,Z坐标保持不变,xoy组成的平面内正好进行一次二维旋转(和上面讨论二维旋转的情况完全一样)

Snip20170914_8.png
  • 推导过程

http://blog.csdn.net/csxiaoshui/article/details/65446125

7,世界坐标变换要先缩放、后旋转、再平移的原因

一个三维场景中的各个模型一般需要各自建模,再通过坐标变换放到一个统一的世界空间的指定位置上。 这个过程在 3D 图形学中称作“世界变换” 。 世界变换有三种,平移、旋转和缩放 (实际还有不常用的扭曲和镜像,它们不是affine变换)。 这三种变换按各种顺序执行,结果是不同的。 可是实际的应用中一般按照 缩放 -> 旋转 -> 平移的顺序进行。 这样做的原因是可以获得最符合常理的变换结果。
比方说,通过世界变换希望获得的结果可能是:
将一个放在原点的物体(比方说可乐罐)移动到(30,50),让它自身倾斜 45 度,再放大 2 倍。
而不希望的结果是:
和本地坐标轴成角度的缩放(会导致扭曲,像踩扁的可乐罐)。
绕自己几何中心以外位置的原点的旋转 (地球公转式) 和缩放。
而颠倒了上述变换顺序就会得到这样不自然的结果。
具体的说:
当缩放在旋转之后进行时,会发生现象1。
当缩放和旋转在平移之后进行时会发生现象2。
这时因为:
在物体刚刚放入世界坐标系的时候使用的是本地坐标,也就是本地和全局坐标系的原点和坐标轴都是重合的(当然两者分别使用了左右手坐标系时除外 - 那是BUG),此时所有物体都“把世界坐标系当做自己的本地坐标系”。
而经过了坐标变换之后:
缩放变换不改变坐标轴的走向,也不改变原点的位置,所以两个坐标系仍然重合。
旋转变换改变坐标轴的走向,但不改变原点的位置,所以两个坐标系坐标轴不再处于相同走向。
平移变换不改变坐标轴走向,但改变原点位置,两个坐标系原点不再重合。
这样就可以解释问什么缩放不能在旋转之后,而缩放和旋转都不能在平移之后了。 于是没有问题的顺序只能是 缩放 -> 旋转 -> 平移 。

相关文章

  • 书单

    《3D数学基础》《代码大全2》《CLR Via C#》《程序员的数学》

  • OpenGL向量、矩阵应用

    一、3D数学 3D数学.在图像图形开发中的充当了什么⻆色?对于学习OpenGL 有一个误区,就是大家认为如果不能精...

  • OpenGL 之3D数学

    3D数学和图像图形的关系 对于学习OpenGL 有一个误区,就是大家认为如果不能精通那些3D图形数学知识,会让我们...

  • 3D数学

    1, 向量 2, 矩阵 3, 欧拉角 4, 四元数 5, 坐标系变换 6, 齐次坐标与透视变换的推导 齐次坐标 向...

  • [3D数学]

    一:坐标系 1.笛卡尔坐标系 2D坐标系都是‘’等价‘’的,无论原点在哪里,我们都可以通过平移将两个坐标系重合 3...

  • Unity基础-向量

    向量是2D、3D数学研究的标准工具,在3D游戏中向量是基础。 一、向量 1、向量的数学定义 向量就是一个数字列表,...

  • 动画

    3D旋转3D数学:欧拉角、万向锁、四元数[https://www.cnblogs.com/HDDDDDD/p/15...

  • 3D引擎编程的4个阶段

    3D引擎编程的4个阶段 第一阶段是了解3D原理和数学基础,大学里面学的线性代数,概率统计和高等数学完全足够,在3D...

  • 3D数学基础

    向量 标量(Magnitude) 坐标系 左手坐标系和右手坐标系 点积 Vector3.Dot(VectorA,V...

  • 3D数学介绍

    多坐标系 摄像机坐标系是和观察者密切相关的坐标系。摄像机坐标系和屏幕坐标系相似,差别在于摄像机坐标系处于3D空间中...

网友评论

      本文标题:3D数学

      本文链接:https://www.haomeiwen.com/subject/kafcsxtx.html