3D Math

一、坐标变换

3D坐标系统是坐标换的基础,OpenGL中的坐标系大体是右手坐标系,而Direct3D中大体是左手坐标系。

OpenGL中坐标的表示使用齐次坐标,即(x,y,z,w),其中表示点时w=1;表示向量时w=0;

矩阵相乘也经常叫作合并,它可以用于将一系列矩阵变换合并成一个矩阵;我们需要经常将相同的一系列矩阵变换应用到场景中的每个点上。通过预先一次计算好这些矩阵的合并,就可以成倍减少总的矩阵运算量;计算矩阵的逆矩阵的运算量很大,应该尽量避免。

平移矩阵

在这里插入图片描述

缩放矩阵

缩放矩阵用于改变物体的大小或者将点向原点相反方向移动。
在这里插入图片描述
缩放还可以用来切换坐标系。例如,我们可以用缩放来在给定右手坐标系的情况下确定左手坐标。
在这里插入图片描述

旋转矩阵

围绕任何轴的旋转都可以表示为绕X、Y、Z轴旋转的组合。围绕这3个轴的旋转角度被称为欧拉角。
在这里插入图片描述
实践中,当3D空间中旋转轴不穿过原点时,物体使用欧拉角进行旋转需要几个额外的步骤:
(1)平移旋转轴以使它经过原点;
(2)绕X、Y和Z轴旋转适当的欧拉角;
(3)复原步骤(1)中的平移。
旋转矩阵都是正交矩阵,反向旋转的矩阵恰等于其转置矩阵。

万向节死锁
四元数

理解四元数
B站视频:3D变换和欧拉角/轴角/四元数

相机的LookAt矩阵

在这里插入图片描述
其中: P(x, y, z)是坐标原点的坐标,在View空间中,即为camera 的position。

二、向量

点积

点积最重要也最基本的应用是求解两向量夹角。设有向量V和W,当V和W为单位向量时,

叉积

三、矩阵堆栈

需要清楚API的旋转实现是改变坐标系还是改变物体,如果是动坐标系,则应该使用矩阵右乘;如果是静态坐标系,则应该使用矩阵左乘,这样才能达到叠加旋转的效果

四、矩阵行主序、列主序

OpenGL在内存中默认是列主序的,而D3D默认是行主序的。
https://www.jianshu.com/p/bfc8327eaad3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值