如何生成坐标以用一条线覆盖球体?

How to produce coordinates to cover a sphere with a single line?

我目前处于这种情况:

我正在尝试生成 x、y、z 坐标,这将使我能够以扫描方式专门覆盖一个球体,就像您在图中的红线上看到的那样。

我目前正在使用此代码生成坐标:

Nsteps = 50
Ntours = 3
R = 10
r = 1

theta = linspace(0, 2*pi*Ntours, Nsteps, endpoint = False)
r0 = linspace(0, R, Nsteps, endpoint = False)


X01 = (r0*cos(theta))
X02 = X01[::-1]
X0 = append(X01,X02)


Y01 = (r0*sin(theta))
Y02 = Y01[::-1]*-1
Y0 = append(Y01,Y02)

Z0 = linspace(0,10,num=100)

如您所见,它一点也不完美,我很难编写一种方法来强制我的坐标生成符合球体大小。

换句话说,我需要一个脚本,输入这些信息后: - 球体半径 - 所需步数 - 转数

生成 x、y、z 坐标,跟踪球体上的这条路径,始终位于球体表面,在 3 个数组 X、Y Z 中。

由于与本主题无关的其他限制,我被迫使用 50 - 100 步,我不能再进一步了。所以我不是在寻找覆盖球体整个表面的东西,而是用这个相当少的步骤就可以很好地覆盖它。

非常感谢您的帮助!

救援球坐标: http://en.wikipedia.org/wiki/Spherical_coordinate_system#Cartesian_coordinates

这允许你做类似的事情

Npoints = 100

t   = np.linspace(0,np.pi,Npoints)
r   = 1

a   = 20
phi = a*t

X = r*np.sin(t)*np.cos(phi)
Y = r*np.sin(t)*np.sin(phi)
Z = r*np.cos(t)

调整 r 半径和 a...螺旋度...我们称之为...