有人知道一个经过良好测试的,可靠的超球面坐标实现,把笛卡尔矢量转换成球面角吗?我更喜欢python,但如果需要,我可以翻译它。在
换句话说,本质上与this question相反。在
在您告诉我实现它很简单之前,下面是我的实现(对于5维空间):
def theta(x):
n = 5
x = np.array(x)
toFill = np.array([0.0, 0.0, 0.0, 0.0])
r_array = np.sqrt( np.array( [ sum( [xj**2 for xj in x[i+1:]] ) for i in range(0,n-1) ] ) )
for k in range(0,n-2):
toFill[k] = np.arctan2( r_array[k] , x[k] )
toFill[n-2] = 2 * np.arctan2( x[n-1] , ( x[n-2] + np.sqrt(x[n-1]**2 + x[n-2]**2) ) )
return toFill
注意,我只关心角度,不关心半径。实现基本上来自here。在
它似乎有效,但我在一些模拟中得到了一些奇怪的结果(我认为这可能是由于这种方法,虽然我还没有直接发现问题)。如果你能在这里看到一些边界条件的问题,请告诉我。在
目前没有回答
相关问题 更多 >
编程相关推荐