在 1 个轴上旋转四元数?
我有一个由四元数旋转的模型。我只能设置旋转,不能添加或减去任何内容。我需要获取轴的值,然后为其添加角度(可能是度数或弧度?),然后重新添加修改后的四元数。
我该怎么做? (在每个轴上回答)。
I have a model rotated by a quaternion. I can only set the rotation, I can't add or subtract from anything. I need to get the value of an axis, and than add an angle to it (maybe a degree or radian?) and than re-add the modified quaternion.
How can I do this? (answer on each axis).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以将两个四元数相乘以生成第三个四元数,它是两次旋转的结果。请注意,四元数乘法是不可交换的,这意味着顺序很重要(如果您在脑海中这样做几次,您就会明白为什么)。
您可以生成一个四元数,表示围绕特定轴旋转给定角度,如下所示(请原谅它是 c++,而不是 java):
例如,要围绕 x 轴旋转,您可以创建一个四元数
createFromAxisAngle(1, 0, 0, M_PI/2)
并将其乘以模型的当前旋转四元数。You can multiply two quaternions together to produce a third quaternion that is the result of the two rotations. Note that quaternion multiplication is not commutative, meaning order matters (if you do this in your head a few times, you can see why).
You can produce a quaternion that represents a rotation by a given angle around a particular axis with something like this (excuse the fact that it is c++, not java):
So to rotate around the x axis for example, you could create a quaternion with
createFromAxisAngle(1, 0, 0, M_PI/2)
and multiply it by the current rotation quaternion of your model.从 sje397 的帖子中制作了一个可运行的代码,以便稍后测试其他细节,我想我会分享。最终使用 C 是没有四元数类的原因。
输出
Made a runable code from sje397's post for testing other details later, thought I would share. Eventually using C the reason for no Quaternion class.
Output