【问题标题】:Calculating multiple quaternions between 2 quaternions计算两个四元数之间的多个四元数
【发布时间】:2019-10-30 15:28:54
【问题描述】:

我在计算 2 个四元数之间的多个四元数时遇到问题。

图片上的示例:

Q1 的 localEulerAngles.y 为 7

Q4 的 localEulerAngles.y 在 -17.4

例如,我可以通过以下方式获得 Q1 和 Q4 之间的中心四元数: Quaternion.Slerp(Q1.transform.localRotation, Q4.transform.localRotation, 0.5f);

它给了我“-5.2”的值——如果我只想要 Q1 和 Q4 之间的一个四元数,那就太好了。

但是如果我想要更多的四元数呢?

Q1,"-5.2" 和 Q4,"-5.2" 的偏差不是 - 如果你仔细想想,它们有点偏离中心。

提前致谢

【问题讨论】:

    标签: c# unity3d rotation quaternions


    【解决方案1】:

    t 使用不同的值:

    int numberOfBetweenQuaternions = 2;
    Quaternion[] inBetweenQuaternions = new Quaternion[numberOfBetweenQuaternions];
    
    for (int i = 0 ; i < numberOfBetweenQuaternions ; i++) 
    {
        inBetweenQuaternions[i] = Quaternion.Slerp(
                Q1.transform.localRotation, 
                Q4.transform.localRotation, 
                (i+1f)/(numberOfBetweenQuaternions+1f));
    }
    
    Q2.transform.localRotation = inBetweenQuaternions[0];
    Q3.transform.localRotation = inBetweenQuaternions[1];
    

    【讨论】:

    • Ouuuu... 没想到只是更改 t 参数...简单。结果它仍然没有完全解决我的问题,但取得了一些进展:) 谢谢!
    猜你喜欢
    • 2010-12-17
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 2018-02-19
    • 2014-04-05
    • 2020-11-06
    • 2013-02-03
    • 1970-01-01
    相关资源
    最近更新 更多