【发布时间】:2016-04-19 07:02:26
【问题描述】:
我正在使用由点 3 x n 和由点索引 3 x m 指定的三角形组成的三角网格。我可以很容易地绘制它,例如使用 mlab
mesh = mlab.triangular_mesh(p[0,:],p[1,:],p[2,:],t.T
我还生成了一个超出范围或nan 的掩码掩码点,所以我有一个大小为 n 的掩码。现在我想掩盖具有被掩盖点的三角形。到目前为止我的解决方案:
1:使用掩码将所有被掩码的点变成nan,例如
p[mask] = nan
mlab 然后仍然显示nan(我需要包含一个阈值过滤器...),我实际上不想弄乱我的数据
2:生成三角形蒙版,我是这样开始的
def triangleMask(triangles, pointmask):
maskedTris = np.zeros((triangles.shape[1]), dtype=np.bool)
maskedIdx = np.nonzero(pointmask)[0]
for i,t in enumerate(triangles.T):
if (i%5000) == 0:
print('working it.:', i)
for p in t:
if p in maskedIdx:
maskedTris[i] = True
break
return maskedTris
这可行,但速度不快。而在我的例子中,n = 250.000 和 m = 500.000,所以“不快”是一个很大的问题。
我知道mlab 中有一个掩码关键字,但我无法让它工作。仅屏蔽 triangular_mesh 调用中的点会产生和错误,因为 t 指的是大于 p 大小的索引。
【问题讨论】:
标签: python numpy matplotlib mayavi