查找列表中向量的平均值

时间:2015-10-16 12:34:17

标签: c# list unity3d

我有一个Vector3列表,每个都有x,y,z值。

List<Vector3> list = new List<Vector3>();

我想迭代这个列表,找到平均值并从中创建一个向量:

结果向量:

averageVector.X = average of all the x values;
averageVector.Y= average of all the y values;
averageVector.Z = average of all the z values;

return averageVector;

我正在尝试为此创建一个功能,并且会非常乐意为您提供帮助!

3 个答案:

答案 0 :(得分:8)

您可以使用linq Enumerable.Average来实现

var newVector = new Vector3(
        list.Average(x=>x.X),
        list.Average(x=>x.Y),
        list.Average(x=>x.Z));

list.Average(x=>x.Z)将从Z

的所有元素返回list的平均值

答案 1 :(得分:4)

您可以使用Enumerable.Aggregate对向量求和,然后除以计数得到平均值。

var average = list.Aggregate(new Vector3(0,0,0), (s,v) => s + v) / (float)list.Count;

答案 2 :(得分:0)

你可以总结一下这些载体:

Vector3 average = Vector3.zero;
 for (int i = 0; i < vectors.Length; i++)
 {
     average += vectors[i];
 }

然后将average向量除以list

的元素数