求多个四元数的平均数

最近要对前几帧数据进行平均数采样。所以又造了一个轮子

此方法经过一些单数和双数的基本测试,除了无效四元数这种特殊情况。

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 avgQuat = Quaternion.Lerp(quatArray[i], quatArray[i + 1], 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;
}
时间: 2024-11-16 17:37:45

求多个四元数的平均数的相关文章

翁恺老师零基础学JAVA语言第五周数组--求平均数例题-个人理解

// 用户输入一系列数字,然后求出这些数字的平均数,并输出输入数字中大于平均数的数 Scanner in = new Scanner(System.in); System.out.println("你打算输入多少个数值?请输入:"); // 计算平均数,需要有:1.记录输入的每个数n:输入数的和sum:输入数值的个数cnt: int cnt = in.nextInt(); // 算平均数,定义sum为浮点数 double sum = 0; System.out.println(&quo

零基础学JAVA语言第五周数组--求平均数例题

package shuzu; import java.util.Scanner; public class Shuzu_pjs { public static void main(String[] args) { // 用户输入一系列数字,然后求出这些数字的平均数,并输出输入数字中大于平均数的数 Scanner in = new Scanner(System.in); System.out.println("你打算输入多少个数值?请输入:"); // 计算平均数,需要有:1.记录输入的

求两个整型数的平均数

求两个整型平均数,简单吧!简单吗? 入门级:加.除 简单! int getAverage(int input1, int input2) { int average = (input1 + input2) / 2; return average; } 这样一个求平均数的方法拿去做大学编程题基本够用了,但是,还不够美! 进阶级:加.位 我们知道,2的指数级的乘.除运算,实质是在做移位运算,所以我们可以试着把除2变成右移1位,于是有: int getAverage(int input1, int i

zjut 1179 平均数

平均数  Time Limit:1000MS  Memory Limit:32768K Description: 求若干个整数的平均数. Input: 输入数据含有不多于5组的数据,每组数据由一个整数n(n≤50)打头,表示后面跟着n个整数. Output: 对于每组数据,输出其平均数,精确到小数点后3位,每个平均数应占单独一行. Sample Input: 3 6 5 18 4 1 2 3 4 Sample Output: 9.667 2.500 #include <iostream> us

3D数学读书笔记——四元数

本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25400659 什么是四元数 复数是由实数加上虚数单位 i 组成,其中 i2  = -1 相似地,四元数都是由实数加上三个元素 i.j.k 组成,而且它们有如下的关系: i2 = j2 = k2 = ijk = -1 每个四元数都是 1.i.j 和 k 的线性组合,即是四元数一般可表示为a + bi + cj + dk. 关于

使用hadoop实现平均数~并输出top N

转载请注明出去:http://blog.csdn.net/xiaojimanman/article/details/41117357 更多hadoop内容请访问:http://blog.csdn.net/xiaojimanman/article/category/2640707 对于求每个学生成绩的平均数和top N问题在数据库中可以通过sql语句就实现出来,这里就不在做介绍.本文主要通过实例介绍hadoop如何求平均数以及输出TOP N. 需求描述: 求文件中每个学生的平均成绩,并将平均成绩最

PAT甲题题解-1108. Finding Average (20)-字符串处理

求给出数的平均数,当然有些是不符合格式的,要输出该数不是合法的. 这里我写了函数来判断是否符合题目要求的数字,有点麻烦. #include <iostream> #include <cstdio> #include <algorithm> #include <string.h> using namespace std; const int maxn=105; bool islegal(char*str){ int len=strlen(str); int p

Java的二维数组的应用及杨辉三角的编写

(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个,即该位置上的元素在该行上最大,在该列上最小(注:一个二维数组也可能没有这样的鞍点). /** * * @author liuhui *@version Java上机实验三 *@time 2016.10.30 */ public class javatest2 { public static int

c# 学习心得(函数方法类)

函数或者说方法都是写在类下的,我们可以通过函数名来调用它们.首先,我们要弄清楚为什么会有函数或者说方法这种东西?这里,我们使用了与前一篇同样的思维方式,先从它的目的或者实用价值出发.当我们在编写程序的时候,有时会遇到这样的情况.比如说,求某个数的阶乘.我们会写出一连串的语句,以得到我们的结果.可是,如果我们后面又要求另一个数的阶乘,我们又要重写一遍.当然,如果你说复制粘贴,那确实不错.但是,如果某种情况要改的地方很多呢?这显然就不是一种简单的途径.正因为如此,才有了我们的函数或者说方法. 我们如