Python 从球体的坐标和直径列表创建阵列

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代表红色球体 谢谢 您真的应该在问题中分享一些代码,向我们展示您尝试了什么以及为什么不起作用。如果社区看到你

我有一个3D图像,其中一些球体包含在一个长方体中(长方体的尺寸是nxn体素)

球体列表=[直径(浮动)、阵列(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