首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得两个四元数之间的Vector3旋转

如何获得两个四元数之间的Vector3旋转
EN

Stack Overflow用户
提问于 2019-12-21 17:47:15
回答 1查看 1.1K关注 0票数 1

我正在编写一个使用Rigidbody旋转Configurable Joint的脚本。我已经弄清楚了targetRotation,但现在我正在与targetAngularVelocity做斗争,如果设置正确,这将帮助我避免抖动。

targetAngularVelocity文献记录中是这样定义的:“这是一个Vector3。它定义了所需的角速度,关节应该旋转成”。问题是,我不知道如何根据对象的两个Quaternions电流旋转和目标旋转来获得这个Quaternions

我没有正确理解它吗?是否有基于两个Quaternions返回旋转矢量的函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-22 05:13:02

所以从数学上讲,四元数代表了刚体的方向。首先考虑前向问题,并查看在应用了t时间的旋转速度q_1之后,取向q_2如何转换为另一个取向q_2

在数学上,旋转矢量有一个震级ω和一个方向k,以至于ω =ω* k

这是用四元数乘法完成的。

q_2 = q_ω * q_1

其中,q_ω表示围绕k轴旋转的角度θ=ω*t。

相反,您需要找到q_ω

代码语言:javascript
运行
复制
var q_ω = q_2 * Quaternion.Inverse(q_1);

并提取旋转轴和角度。

代码语言:javascript
运行
复制
q_ω.ToAngleAxis(out float angle, out Vector3 axis);

并组成转速矢量,它对应于这个转换,以time秒为单位。

代码语言:javascript
运行
复制
var ω = (angle/time)*axis;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59438501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档