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

时间:2015-06-19 09:51:25

标签: python matplotlib trigonometry

我目前处于这种情况:

Line plotting the coordinates / Sphere of interest

我正在尝试生成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步,我不能再进一步了。因此,我并不是想要覆盖整个球体表面的东西,而是只需要很少的步骤就可以覆盖它。

非常感谢你的帮助!

1 个答案:

答案 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 ...让我们称之为......