首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用偏移量旋转四元数?

用偏移量旋转四元数?
EN

Stack Overflow用户
提问于 2014-11-16 23:12:54
回答 2查看 3.7K关注 0票数 4

我试图在一个四元数的旋转中添加一个偏移量,根据统一文献,两个四元数相乘与按顺序进行两次旋转是一样的。

这就是我现在想做的:

如果偏移量四元数是(0,0,0,0)乘以第一个四元数,则不会有任何效果。但是,在我的测试中,任何四元数乘以(0,0,0,0,0)的结果都是(0,0,0,0),所以这是不正确的。

代码语言:javascript
复制
    Quaternion q = new Quaternion (-0.7f, 0f, 0f, -0.7f);
    Quaternion rotationZero = new Quaternion (0f, 0f, 0f, 0f); // offset

    Quaternion result = q * rotationZero;

    print (result); // (0.0, 0.0, 0.0, 0.0)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-17 04:28:34

这里的问题不是C#,或者在Unity中,您使用的值会导致输出值为(0.0, 0.0, 0.0, 0.0)。它可以从数学上解释如下。

四元数的形式是

q = q0 + iq1 + jq2 + kq3r = r0 + ir1 + jr2 + kr3

四元数乘积的形式为

t= q×r = t0 + it1 + jt2 + kt3,在哪里

t0 = (r0q0−r1q1−r2q2−r3q3) t1 = (r0q1+r1q0−r2q3+r3q2) t2 = (r0q2+r1q3+r2q0−r3q1) t3 = (r0q3−r1q2+r2q1+r3q0)

票数 4
EN

Stack Overflow用户

发布于 2020-01-28 07:04:58

代码语言:javascript
复制
Quaternion q = new Quaternion (-0.7f, 0f, 0f, -0.7f);
Quaternion rotationZero = Quaternion.identity; // offset

Quaternion result = q * rotationZero;

Quaternion.identity文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26963207

复制
相关文章

相似问题

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