OpenGL 学习笔记(十四)

文章讲述了三维空间中的旋转变换,首先通过将轴平移并绕坐标轴旋转来实现任意轴的旋转,然后介绍了观察者视角的变化,即视图变换,涉及到观察坐标系的定义和从世界坐标系到观察坐标系的转换,强调了模型变换和观察变换的对偶性在场景渲染中的应用。
摘要由CSDN通过智能技术生成

一、任意轴旋转变换

         其实有了之前相对于任意点的变换,我们会得到一些启发,那就是既然我们只会绕轴旋转。同时我们也可以想见,这个过程要复杂许多。要想让轴靠近坐标轴,首先把它往轴上靠。所以可以先把AB进行平移,让a点与坐标轴重合,这样一来,AB就到了O'B上了。这个时候就对应着这个变换矩阵Ta。

         接下来,就要进行旋转。显然我们首先要让它落到某个坐标平面上。

        我们可以绕着X轴正传阿尔法角,就可以把OE'B转动到了XOZ平面上。那么BE'点是点B在对应平面上的投影。

        那么这个平面,与Z轴的夹角,就是阿尔法。

        我们这里可以沿BE’点分别对Y轴和Z轴作垂线。那么垂点分别就是D和E。我们就可以算出阿尔法的余弦值是这样的,而正弦值,就是这个式子。

        考虑到OE'B的方向数是ABC,因此,就OE'等于C。

 

         接下来,就是之前变换的逆变换了。对于矩阵运算来说,T1乘以T2的逆等于T2的逆乘以T1的逆,所以之前的ta/trx/try的逆就是try的逆乘以TRX的泥,再乘以Ta的逆。

         总之我们最终得到了相对于ab轴的旋转变换矩阵trab这样的一个计算式。

        观察者也能动之前讲的是三维模型,动起来指的是模型本身在世界坐标系中的运动。

        我们用矩阵运算的方法进行了解决。那么在实际生活中,还可以移动观察点和改变观察方向,以便在不同的距离和角度上观察物体。

        这就是我们今天要说的,观察者也能动。而这里对应的变换,实际上也就是视图变换。
 

         怎么变化?首先,我们对观察坐标系进行定义,这里的点P0/X0/Y0/Z0就是观察参考点,它是观察坐标系的原点,一般认为,就是视点。

        如果我们观察物体的焦点在这个P点上,那么P/P0就是观察坐标系ZV轴的方向。显然,焦点不同也就是P不同,ZV轴也就不同了。

        Yv_对于我们观察的正方向,就像我们给一个人拍照,可以正着拍,也可以斜着拍,那么这里的正方向,就是YV。

        有了两个方向,按照右手系的规则就可以定义出XV了。这样,我们就可以定义出观察参考坐标系了。

        而我们要进行的观察变换,也叫视图变换,实际上,就是把世界坐标系变换到观察坐标系中。

        以这里的点Q为例,实际上,是求出世界坐标系中点Q(XYZ)在观察坐标系中的坐标值。

        大家应该有点联想到刚才的绕任意轴旋转了,的确有些相似

        先要平移观察参考点到用户坐标系原点。

         然后进行旋转变换,分别让XV,YV和ZV轴对应到用户坐标系中的XY和Z轴就可以了呢?

的确跟刚才的Trab的计算有些类似。

         对于平移,我们很快可以求出它的平移矢量,分别是负的X0,负的Y0和负的Z0。而旋转,我们可以把YV转动到Y轴,然后再绕Y轴旋转,让xv和zv分别与X轴、Z轴重合。

 好不容易求出来的值,不能在逆变换回去了

        在实际的应用中,模型变换域观察变换具有对偶性,也就是模型动,我们看到的就动;而模型不动,观察者动,我们看到的景物也发生了变化。

         但很多时候,世界坐标系,也就说用户坐标系中,存在多个模型, 有的静止,有的运动,这样一来,再结合观察者在场景中的漫游,就可以看到各种不同的景象了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大王算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值