以下のコードのような関数があります。その目的は、3つのポイントがそれぞれ1つのファセットであるポイントの配列から一度に1つずつ三角形のファセットを取得し、それらをテッセレーションして、ファセットを、辺の長さが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