我是一个新手,正在尝试使用 Numpy 在 python 2.7.2 中进行一些操作,但它没有按预期工作,所以想检查一下我是否误解了一些基本的东西。
我正在计算三角形(三法线)的值,然后使用三角形索引数组(trivertexidx)更新三角形每个点的值(垂直法线)。作为一个循环,我正在计算:
for itri in range(ntriangles) :
vertnormals[(trivertidx[itri,0]),:] += trinormals[itri,:]
vertnormals[(trivertidx[itri,1]),:] += trinormals[itri,:]
vertnormals[(trivertidx[itri,2]),:] += trinormals[itri,:]
由于这有点慢,我认为可以将其修改为:
vertnormals[(trivertidx[:,0]),:] += trinormals[:,:]
vertnormals[(trivertidx[:,1]),:] += trinormals[:,:]
vertnormals[(trivertidx[:,2]),:] += trinormals[:,:]
然而,这并没有给出相同的结果。还有另一种更简单的方法来编写循环吗?任何指针表示赞赏。请注意,这里的目的是为 vertnormals 中的每个条目获取一个值,然后对结果进行归一化。