Implemented the Axis object logic for Spatial Projection.
Implemented some tests
class LinearSpatialAxis(BaseAxis):
"""SpatialAxis converts cartesian coordinates
into polar coordinates (r, theta, phi)
This is achieved by projecting the points on to an imaginary
plane that sits directly in front of the listener at all times.
The plane is assumed to be at unit distance, any further distance effects
can be applied later by scaling the r in polar coordinates
"""
def __init__(
self,
domain: SpatialRange,
range_: SpatialRange,
):