Source code for attitude.coordinates
import numpy as N
[docs]def spherical(coordinates):
"""No error is propagated"""
c = coordinates
r = N.linalg.norm(c,axis=0)
theta = N.arccos(c[2]/r)
phi = N.arctan2(c[1],c[0])
return N.column_stack((r,theta,phi))
[docs]def cartesian(spherical):
r,theta,phi = spherical
z = r*N.cos(theta)
zc = r*N.sin(theta)
x = zc*N.sin(phi)
y = zc*N.cos(phi)
return x,y,z
[docs]def centered(coordinates):
"""
Centers coordinate distribution with respect to its
mean on all three axes. This is used as the input to
the regression model, so it can be converted easily
into radial coordinates.
"""
coordinates = N.array(coordinates)
means = N.mean(coordinates,axis=0)
return coordinates - means