四元数旋转不太正确

发布于 2024-12-12 18:36:27 字数 533 浏览 0 评论 0原文

继我的上一个问题之后,我现在已经设法用四元数旋转我的对象,但是还有一个小问题,不知道怎么解决。使用下面的代码,我的对象围绕 x 轴和 y 轴旋转。但当我在 x 键和 y 键之间切换时,它总是跳回到初始位置。所以我从来没有从新的职位开始轮换,而总是从项目开始时的位置开始轮换。

Quaternion q1    = quaternion->quat_rotate(anglex,1,0,0);
Quaternion q2    = quaternion->quat_rotate(angley,0,1,0);
quaternion->mult(q1,q2);
quaternion->quat_matrix(Matrix);
glMultMatrixf(Matrix);
object->drawObject(Red,Green,Blue);

我希望你明白我的意思。

Following on from my previous question, I have now managed to rotate my object with quaternions but there is still a small problem and I dont know how to solve it. With the code below my object rotates round the x and y axis. But it always jumps back to the initial position when I switch between x- and y-key. So I never get a rotation from the new position, but always from the one with which the programm started.

Quaternion q1    = quaternion->quat_rotate(anglex,1,0,0);
Quaternion q2    = quaternion->quat_rotate(angley,0,1,0);
quaternion->mult(q1,q2);
quaternion->quat_matrix(Matrix);
glMultMatrixf(Matrix);
object->drawObject(Red,Green,Blue);

I hope you understand what I mean.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怎樣才叫好 2024-12-19 18:36:27

但是当我在 x 键和 y 键之间切换时,它总是跳回到初始位置。因此,我从来没有从新的职位开始轮换,而总是从程序开始时的位置开始轮换。

当然可以。您的代码完全按照您的指示执行。您还没有向我们展示 Quaternion::mult(Quaterion&q1,Quaterion&q1) 的作用,但我怀疑它用 q1 和 q2 的乘积替换了四元数实例的内容。您需要将当前方向乘以 q1*q2 以获得新方向,而不是用 q1*q2 替换当前方向。

But it always jumps back to the initial position when I switch between x- and y-key. So I never get a rotation from the new position, but always from the one with which the programm started.

Of course it does. Your code is doing exactly what you are telling it to do. You haven't shown us what Quaternion::mult(Quaterion&q1,Quaterion&q1) does, but I suspect it replaces the contents of the quaternion instance with the product of q1 and q2. You need to multiply the current orientation by q1*q2 to get the new orientation rather than replace the current orientation with q1*q2.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文