我有一个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;
我正在尝试为此创建一个功能,并且会非常乐意为您提供帮助!
答案 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