4
我想对基于体素的球体对象进行测量,以numpy数组表示。由于采样,这些球体被表示为一组立方体(因为它们在数组中被采样)。我想通过这个网格限制来模拟引入的错误。有没有什么办法在网格中绘制3D球体来运行我的模拟? (所以基本上,单位长度为1的球体将是阵列中的一个点)在3D numpy网格中绘制/采样球体
或者是否有另一种计算采样引入的误差的方法?
在2-d,这似乎是容易...
我想对基于体素的球体对象进行测量,以numpy数组表示。由于采样,这些球体被表示为一组立方体(因为它们在数组中被采样)。我想通过这个网格限制来模拟引入的错误。有没有什么办法在网格中绘制3D球体来运行我的模拟? (所以基本上,单位长度为1的球体将是阵列中的一个点)在3D numpy网格中绘制/采样球体
或者是否有另一种计算采样引入的误差的方法?
在2-d,这似乎是容易...
最直接的方法是创建一个边界框阵列,所述距离保持在每个点处的球的中心:
>>> radius = 3
>>> r2 = np.arange(-radius, radius+1)**2
>>> dist2 = r2[:, None, None] + r2[:, None] + r2
>>> volume = np.sum(dist2 <= radius**2)
>>> volume
123
二维情况下更容易想象:
>>> dist2 = r2[:, None] + r2
>>> (dist2 <= radius**2).astype(np.int)
array([[0, 0, 0, 1, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 0],
[1, 1, 1, 1, 1, 1, 1],
[0, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 1, 0, 0, 0]])
>>> np.sum(dist2 <= radius**2)
29
非常感谢。这个作品真棒!你是否也有一个想法,如何获得添加下一个“立方体”的半径“步骤”? – Dschoni 2013-04-23 14:52:27