Python 从球体的坐标和直径列表创建阵列
我有一个3D图像,其中一些球体包含在一个长方体中(长方体的尺寸是nxn体素)Python 从球体的坐标和直径列表创建阵列,python,arrays,image,list,Python,Arrays,Image,List,我有一个3D图像,其中一些球体包含在一个长方体中(长方体的尺寸是nxn体素) 球体列表=[直径(浮动)、阵列(x,y,z)]和in(x,y,z)是球体的坐标。 现在我想创建一个维度为nxn的数组S。S的元素S[i][j][k]取值 0(如果点S[i][j][k]超出球体) 1(如果没有) 我怎么能这么做 现在,我将用黄色或红色给这些球体上色。我想做同样的事情,但这次,1代表黄色球体,2代表红色球体 谢谢 您真的应该在问题中分享一些代码,向我们展示您尝试了什么以及为什么不起作用。如果社区看到你
球体列表=[直径(浮动)、阵列(x,y,z)]和in(x,y,z)是球体的坐标。
现在我想创建一个维度为nxn
的数组S
。S的元素S[i][j][k]
取值
- 0(如果点
S[i][j][k]
超出球体)
- 1(如果没有)
我怎么能这么做
现在,我将用黄色或红色给这些球体上色。我想做同样的事情,但这次,1代表黄色球体,2代表红色球体
谢谢 您真的应该在问题中分享一些代码,向我们展示您尝试了什么以及为什么不起作用。如果社区看到你的努力,他们会更有帮助。但由于这是一个很容易解决的问题,而且我现在很想解决这个问题,所以我为您编写了一个解决方案:
# init
n = 7
range_n = range(n)
box = [[[0 for x in range_n] for y in range_n] for z in range_n]
spheres = [
{"color": 1, "diameter": 2.0, "x": 4, "y": 1, "z": 2},
{"color": 2, "diameter": 1.5, "x": 3, "y": 4, "z": 5}
]
# is a point inside a sphere?
def point_in_sphere(x, y, z, sphere):
return (x - sphere["x"])**2 + (y - sphere["y"])**2 + (z - sphere["z"])**2 <= sphere["diameter"]**2
# union
for z in range_n:
for y in range_n:
for x in range_n:
color = 0
for sphere in spheres:
if point_in_sphere(x, y, z, sphere):
color = sphere["color"]
box[z][y][x] = color
# print
for z in range_n:
for y in range_n:
print " " * (n - y),
for x in range_n:
print box[z][y][x],
print
print
你有密码吗?根据到每个球体中心的距离,您可以轻松检查体素(x,y,z)
是否位于球体的任何。你有给球上色的规则吗?我没有给球上色的规则,但是球的颜色将添加到列表中[diameter(float)、array(x、y、z)、color]之前。同样,你有代码吗?到目前为止你试过什么?你踩的是哪一步?这里不是为您编写代码的地方。另外,球体是否重叠,重叠中的元音应该怎么办?谢谢你的回答,我没有写任何代码,因为我使用ImageJ,所以我可以从原始图像创建一个二进制图像。
0 0 0 0 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 1 1 1 0
0 0 0 1 1 1 0
0 0 0 1 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 1 1 1 0
0 0 1 1 1 1 1
0 0 0 1 1 1 0
0 0 0 0 1 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 1 1 1 0
0 0 0 1 1 1 0
0 0 0 1 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 0 0
0 0 0 2 0 0 0
0 0 2 2 2 0 0
0 0 0 2 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 2 2 2 0 0
0 0 2 2 2 0 0
0 0 2 2 2 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 2 0 0 0
0 0 2 2 2 0 0
0 0 0 2 0 0 0
0 0 0 0 0 0 0