我目前处于这种情况:
我正在尝试生成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步,我不能再进一步了。因此,我并不是想要覆盖整个球体表面的东西,而是只需要很少的步骤就可以覆盖它。
非常感谢你的帮助!
答案 0 :(得分:1)
救援的球坐标: 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
...让我们称之为......