我只是试图创建一个有效的球面到笛卡尔坐标转换器。但是,它不能提供正确的解决方案,并且我已经多次检查了转换方程是否正确。更为奇怪的是,该函数可以在另一个脚本中运行,但不能单独运行。我正在使用Spyder。为什么会这样?
import numpy as np
R = 0.02
Phi = 90
Theta = 0
def Sphere2Cart(r,theta,phi):
xOut = r*np.sin(phi)*np.cos(theta)
yOut = r*np.sin(phi)*np.sin(theta)
zOut = r*np.cos(phi)
return xOut,yOut,zOut
x,y,z = Sphere2Cart(R,Theta,Phi)
答案给了我:
正确的答案应该是:(x,y,z)=(0.02,0,0)
[您的R
,Phi
和Theta
看起来像度,但是对于三角函数来说为numpy uses radians。
要将值转换为弧度,请使用np.deg2rad()
(或math.radians()
):
x,y,z = Sphere2Cart(R, np.deg2rad(Theta), np.deg2rad(Phi))