如何在Python中生成球体坐标?

1 投票
2 回答
2308 浏览
提问于 2025-04-18 01:49

在Python中,如何生成在球面上的坐标呢?我知道球的方程是 x^2 + y^2 + z^2 = r^2。但是,怎么写一个函数,让它可以根据一个大于1的整数 a 和半径 r,返回一个包含 (x,y,z) 坐标的列表 lst 呢?这个列表需要满足以下条件:

  • len(lst) = a
  • 所有相邻点之间的距离必须相同(也就是说,这些点之间的距离要一样)
  • 每个点都要满足 x^2 + y^2 + z^2 = r^2
  • 这个球的中心在 (0,0)

谢谢!

2 个回答

0
a = 12
r = 0.2
theta = np.radians(np.linspace(0, 360, a+1))
phi = np.radians(np.linspace(0, 360, a+1))

x = r * np.einsum("i,j->ij", np.cos(phi), np.sin(theta))
y = r * np.einsum("i,j->ij", np.sin(phi), np.sin(theta))
z = r * np.einsum("i,j->ij", np.ones(len(theta)), np.cos(theta))
xyz = np.array([x.flatten(), y.flatten(), z.flatten()])

这里唯一的问题是点的数量是 a 的平方。不过我想你可以根据需要来调整它。

0

可以去看看这个链接:http://www.faqs.org/faqs/graphics/algorithms-faq/,里面有第6.06节的内容。

撰写回答