複数の四元数の平均数を求めます
3512 ワード
最近では、前のフレームデータの平均数をサンプリングします.だからまた車輪を作った
この方法はいくつかの単数と双数の基本テストを経て、無効な四元数の問題を解決して、基本的に使用することができます:
この方法はいくつかの単数と双数の基本テストを経て、無効な四元数の問題を解決して、基本的に使用することができます:
public static Quaternion Average(Quaternion[] quatArray)
{
var result = new Quaternion();
var count = quatArray.Length;
var error = 0;
while (count > 1)
{
if (error >= 10000) break;
error++;
var k = 0;
for (int i = 0; i + 1 < count; i += 2)
{
var a = quatArray[i];
var b = quatArray[i + 1];
if (Quaternion.Dot(a, a) < Quaternion.kEpsilon)
a = Quaternion.identity;
if (Quaternion.Dot(b, b) < Quaternion.kEpsilon)
b = Quaternion.identity;
var avgQuat = Quaternion.LerpUnclamped(a, b, 0.5f);
quatArray[k] = avgQuat;
k++;
}
var lastCount = count;
count = k;
if ((lastCount & 1) == 1)
{
k++;
count++;
quatArray[k] = quatArray[lastCount - 1];
}
}
result = quatArray[0];
return result;
}