我有一个类似于下面代码的函数。它的目的是从一组点中一次取一个三角形面,其中每三个点都是一个面,并将它们细分,用边长不超过 nodeSize 的较小面的列表替换面。
当然,对于任何真实的刻面网格来说,这个函数都是很耗时的。我想重构它以使用一些粗略的并行化。但是,Parallel.For 似乎没有办法在保留索引号的同时每隔一段时间遍历数组中的索引。
记住SplitTriangle
循环内的函数在计算上不利于并行化,我该如何重构这个函数?
Protected Shared Function SplitTriangles(Points As IEnumerable(Of Point3D), nodeSize As Single) As List(Of Point3D)
Dim resultList As New List(Of Point3D)
For i As Integer = 0 To Points.Count - 1 Step 3
resultList.AddRange(SplitTriangle(Points(i), Points(i + 1), Points(i + 2), nodeSize * 4))
Next
Return resultList
End Function