Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算两个四元数之间的多个四元数_C#_Unity3d_Rotation_Quaternions - Fatal编程技术网

C# 计算两个四元数之间的多个四元数

C# 计算两个四元数之间的多个四元数,c#,unity3d,rotation,quaternions,C#,Unity3d,Rotation,Quaternions,我在计算两个四元数之间的多个四元数时遇到问题 图像上的示例: Q1在7处有localEulerAngles.y Q4的localEulerAngles.y为-17.4 我可以获得Q1和Q4之间的中心四元数,例如: Quaternion.Slerp(Q1.transform.localRotation,Q4.transform.localRotation,0.5f) 它给了我“-5.2”的值-如果我只想要一个四元数在Q1和Q4之间,这是很好的 但是如果我想要更多的四元数呢 第一季度的Slerp,

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

图像上的示例:

Q1在7处有localEulerAngles.y

Q4的localEulerAngles.y为-17.4

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

它给了我“-5.2”的值-如果我只想要一个四元数在Q1和Q4之间,这是很好的

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

第一季度的Slerp,“-5.2”和第四季度的Slerp,“-5.2”不是这样的-如果你仔细想想,它们有点偏离中心


提前感谢

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];
intnumberofbetweenkernions=2;
四元数[]中间四元数=新四元数[中间四元数的数目];
for(int i=0;i
ouuu。。。没有想到只是改变t参数。。。简单。结果还是没有完全解决我的问题,但有了一些进展:)谢谢!