我有一个三角形列表,格式如下:
type alias Vertex = {position: vec3}
List (Vertex,Vertex,Vertex)
现在我想计算三角形每个顶点的法向量。因此,我首先需要计算三角形的法向量,这不是问题。我可以像这样建模具有法向量的三角形:
type alias Triangle = {normal: Vertex, points: (Vertex,Vertex,Vertex)}
接着对原始列表进行映射,并计算三角形的法线。
但是我需要找到所有共享同一点的三角形集,从这些三角形的法线中计算该点的法线。然后,我需要更新所有这些三角形的结果,将法线存储在它们所有的顶点中。结果的格式将如下所示:
type alias Vertex = {position: vec3, normal: vec3}
List (Vertex,Vertex,Vertex)
所以我感觉使用列表可能不是最好的想法,但我不知道从哪里开始。