|
关于万向节死锁的问题,实在搞不明白,希望能帮帮忙
我先前在网上书上看了一些这方面的东西,但是我看到的说法多种多样,或许是我没明白一些基本的东西,而那些人只是说法不同,实质相同
说法:
我们最常用的旋转方法应该是使用yaw, roll和pitch。yaw是在XZ轴平面上围绕Y轴左右旋转,当开车时使用的是yaw。pitch在YZ轴平面上围绕X轴上下旋转,喷气机飞行或爬坡时用pitch向上或向下。roll是在XY轴平面上绕Z轴倾斜旋转,从字面意思上说,当你驾驶汽车高速急转弯时,你的汽车会出现roll运动
欧拉旋转十分的有用,Ogre API也提供了欧拉旋转。但是,旋转时也会出问题。一个是操作的顺序不能乱。如果你将对象先pitch 90度,然后再yaw 45度得到的结果肯定与先yaw 90度再pitch 45度不同。另外一个叫做万向节锁。万向节是一个旋转轴。这个问题发生在两个旋转轴重合时,此时需要删掉一个。
(译者注:欧拉角最著名的问题是这样的:当你先yaw 45度再pitch 90度,和先pitch90度再roll 90度是等价的。事实上,一旦先择±90度为pitch角,就被限定在只能绕竖轴旋转。这种现象,角度为±90度的第二次旋转使得第一次和第三次旋转轴相同,成为万向锁。为了消除限制欧拉角的这种别名现象,规定万向锁情况下只能由yaw完成绕竖轴的旋转。即若pitch = ±90度,则roll = 0)
总的来说,欧拉角在实际的应用是受限的。这里我所指的是使用yaw, roll, pitch操作让对象任意旋转并不是很实用。如果你要一个可以任意pitch / yaw的相机(就像许多第一人称视角射击游戏)的话,它们是很有用的。使用双场景节点的技巧,你可以得到一个仅用yaw和pitch操作却能实现你所需要的全部旋转功能的相机。尽管如此,当你的一个对象面对一个方向,而且你想让它面对处于任意位置的对象时,取当前的yaw, roll和pitch值后再计算与新方向之间的角度差并不是十分有效的。同样的,如何使旋转更加平滑?进入矩阵的学习。
提问 :
1 这里的绕轴旋转是指自身的坐标系(前后左右上下),还是在绕一个固定坐标系的轴旋转?
2 所说的两个轴重合,这里的"两个轴"是指自身的,还是固定的? 还是一个自身的轴和一个固定坐标系的轴?那么又是如何重叠的呢?
3 "事实上,一旦先择±90度为pitch角,就被限定在只能绕竖轴旋转"这句又怎么理解?
各位前辈高手,小弟初学,还有一些不明白,但也不知该怎么问,先问这些
|
|