2015-10-16 69 views
1

我有一個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; 

我試圖創建一個功能這,並會愛你的幫助!

回答

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)將所有元素從list

0

返回Z平均值可以總結載體:

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

和然後將average向量除以的元素數

3

你可以用Enumerable.Aggregate來總結向量,然後除以計數得到平均值。

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

只有一個通過(+1) –

+0

這工作,但我使用了以前的答案。謝謝,我嘗試了他們,並且運作良好。對效率不確定,但將檢查=) – Passy

+0

@Passy這將使通過列表只有一個通過與3對於wudzik的答案。無論哪種方式,技術上都是線性的,而wudzik可能更容易閱讀。 – juharr