查找列表中向量的平均值

Pas*_*ssy 1 c# list unity-game-engine

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

List<Vector3> list = new List<Vector3>();
Run Code Online (Sandbox Code Playgroud)

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

结果向量:

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;
Run Code Online (Sandbox Code Playgroud)

我正在尝试为此创建一个功能,并希望得到你的帮助!

Kam*_*ski 8

你可以使用linq Enumerable.Average来实现这个目标

var newVector = new Vector3(
        list.Average(x=>x.X),
        list.Average(x=>x.Y),
        list.Average(x=>x.Z));
Run Code Online (Sandbox Code Playgroud)

list.Average(x=>x.Z)将返回Z来自所有元素的平均值list


juh*_*arr 6

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

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

  • @rostok,此参数完全没有必要。 (2认同)