我正在努力弄清楚如何使俯仰偏航和侧倾在它们之间独立。一旦我在z轴(俯仰)上旋转某个物体,第二次旋转(yaxis yaw)取决于第一次旋转的结果,第三次旋转(x轴,roll)取决于其他两次旋转的结果。所以,我没有独立的俯仰、偏航和横滚,而是把它们三者混合在一起,很难看。
我希望有可能将物体的角度存储在一个数组中[俯仰、偏航、滚动],然后在变换过程中对这些角度进行解码,以便偏航将物体放置在给定的位置,然后它获取与俯仰相对应的角度,但不是两者的复合。。。
我看过对“任意轴旋转矩阵”的引用。获得所需的结果有用吗???1)应用偏航(gl.glRotatef(beta,0.0f,1.0f,0.0f);)2)获得手动旋转矢量(1.0f,0.0f,0.0f)的结果轴圆角β3)使用2中得到的轴应用螺距{并且对于滚动...如果1,2,3是正确的} 4)旋转2中得到的轴圆角其x对于滚动5)使用4中得到的轴应用滚动
它会工作吗?有更好的解决方案吗?我想以[俯仰、偏航、滚动]格式保持对象的局部方向。
我已经挣扎了好几天了,如果可能的话,我想避免使用四元数。3D对象相对于0,0,0进行存储,并沿{1,0,0}查看,然后变换到它们的目标和每个帧的角度,因此可能很容易避免万向节锁定问题。
换句话说,我的相机工作正常,世界坐标正确,但我不知道如何或在何处应用基于偏航、髓点和滚动的对象局部变换。
结果应从数组[y, p, r]中读取,它们的组合不应重叠。
实际上我的转变是:
gl.glLoadIdentity();
float[] scalation = transform.getScalation();
gl.glScalef(scalation[0], scalation[1], scalation[2]);
float[] translation = transform.getTranslation();
gl.glTranslatef(translation[0], translation[1], translation[2]);
float[] rotation = transform.getRotation();
gl.glRotatef(rotation[0], 1.0f, 0.0f, 0.0f);
gl.glRotatef(rotation[1], 0.0f, 1.0f, 0.0f);
gl.glRotatef(rotation[2], 0.0f, 0.0f, 1.0f);
累积(偏航、俯仰、滚转)旋转需要保持一个变换矩阵,该矩阵是单独变换的产物,按照它们发生的顺序。生成的矩阵是围绕某个轴和某个角度的旋转。
如果使用偏航/俯仰/滚转,最终方向将始终取决于应用它们的数量和顺序。如果您想要可读性或简单性,可以选择其他方案。我喜欢选择一个前向向量(F),然后根据一个规范的“世界上方向”向量计算右向和上方向向量,然后只填充矩阵列。如果愿意,可以添加额外的“轴旋转”角度项。这有点像四元数,但更具可读性。我使用这个表示来控制一个基本的WASD样式的相机。
方向总是取决于角度顺序。你不能让它们独立。你旋转向量乘以矩阵,矩阵乘法不是交换的。你可以选择一个顺序并与之保持一致。对于这些问题,一个常见的选择是ZYX方向方法(先滚动,然后俯仰,最后偏航)。当我处理角度时,我个人的参考是这个文档,它对我帮助很大。
我想做的是从我的相机中投射光线。我知道相机的x、y和z坐标,以及它的俯仰和偏航。我需要计算它的方向向量,这样我就可以把它传递给光线跟踪算法。 相机的向上向量是(0,1,0)。“音高”,从相机的角度来看,是上下看。 (我宁愿不使用矩阵,但如果有必要,我会使用)
所以基本上在我的游戏中,我设法添加了向右移动,然后应用了相反的逻辑向左移动,但我仍然没有设法向前或向后移动。我只有一个俯仰和偏航可以使用,这意味着我没有RotationX、Y或Z。如果你能帮我计算这些,如果有必要的话也会很酷。这是我目前的代码: 我也有一个创建视图矩阵方法,称为每一帧,就像camera.update()方法一样
我一直在处理3D空间(X、Y、Z)中的点,希望能够计算其中两个点之间的俯仰和偏航。 我的当前代码: 其中X1、X2、Y1、Y2、Z1、Z2在运行时之前都是未知的,此时它们是从两个随机生成的点收集的。 然而,由于某种原因,我的结果大错特错,我尝试了许多不同的组合,在google上搜索了无数的东西,但什么都没有找到。 一些制约因素是: 节距只能小于或等于90,或大于或等于-90(90= 这是我第一次使
如果我有一个相机的偏航、俯仰和向上向量(在我的情况下总是[0,1,0]),计算相应滚动的最佳方法是什么?
我试图从我有的方向向量(从中我可以得到俯仰和偏航)和滚动来计算一个向上向量。我需要这个,这样我就可以做一个四元数。 有人知道我怎么做吗?
我的投球和打哈欠都搞砸了。我有垫子的俯仰和偏航,但光束的俯仰和偏航都搞砸了。如何计算垫的俯仰和偏航的法向量?我在stackoverflow上尝试了一大堆数学,但到目前为止都失败了。 我接下来尝试做的是将光束的俯仰和偏航从垫子的俯仰和偏航中分离出来,并分别计算它们。这基本上有效,但偏航仍然完全混乱。 我过去是通过光束的偏航和俯仰来计算方向向量的,这是一个util minecraft用来计算暴徒的方向