OpenGL应用开发---基础变换

一、齐次坐标系

向量的w分量也叫齐次坐标。想要从齐次向量得到3D向量,我们可以把x、y和z坐标分别除以w坐标。我们通常不会注意这个问题,因为w分量通常是1.0。使用齐次坐标有几点好处:它允许我们在3D向量上进行位移(如果没有w分量我们是不能位移向量的)。

如果一个向量的齐次坐标是0,这个坐标就是方向向量(Direction Vector),因为w坐标是0,这个向量就不能位移(译注:这也就是我们说的不能位移一个方向)。

二、缩放变换

缩放变换的原理是对一个向量的每个分量扩大或者缩小倍数,已到达到我们需要的结果,列如我们需要将一个二维向量的X分量变为原来的两倍,而Y分量变为原来的0.5倍此时的向量变换为:

从单位矩阵了解到,每个对角线元素会分别与向量的对应元素相乘。所以我们将向量的每个分量的缩放值用来替换单位矩阵中的1值,此时我们构建的缩放矩阵的格式为:

我们为了使模型能够绕任意轴进行缩放我们需要构建一个绕任意轴缩放的缩放矩阵,其构建原来如下:

三、旋转变换

旋转矩阵的原理在于我们已旋转的坐标轴和旋转角度,然后根据之间三角形之间的三角函数关系我们构建出一个绕旋转坐标轴的选择矩阵,列如:


在图中向量以z轴为旋转轴旋转了α角度,此时我们根据三角函数:

向量v的X分量=cos(α+a)*向量c的X分量
向量v的y分量=sin(α+a)*向量c的y分量

根据这个原理我们可以得到围绕着不同坐标轴旋转的旋转矩阵:

我们希望的是能够使物体能够绕任意的向量旋转,所以我们需要推导出构建任意矩阵的公式,

通过将三个代表坐标轴的单位向量分别带入方程,就如同构建绕任意方向缩放矩阵一样,得到三个不同的矩阵,每个矩阵就代表着将向量的一个分量变换到旋转后的坐标值,通过组合这三个矩阵,我们就可以得到一个绕任意轴旋转的旋转矩阵:

在其中(Rx,Ry,Rz)(Rx,Ry,Rz)代表任意旋转轴。

四、位移变换

向量的位移原理在于,将向量的每个分量都加上一个合适的值,使向量表示一个新的坐标位置。

由于矩阵与向量的相乘的规则,我们只能够使用矩阵到W分量来表示位移量,然后就可以构建一个位移矩阵:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值