Source code for geometry.spheres_embedding


from contracts import contract
import numpy as np


[docs]@contract(returns='S2', a='S1') def S2_from_S1(a): return np.array([a[0], a[1], 0])
[docs]@contract(returns='S1', b='S2') def S1_project_from_S2(b): if np.abs(b[2]) == 1: return np.array([1, 0]) theta = np.arctan2(b[1], b[0]) return np.array([np.cos(theta), np.sin(theta)])
[docs]@contract(returns='S1', b='R2') def S1_project_from_R2(b): norm = np.linalg.norm(b) atol = 1e-8 # XXX if norm <= atol: return np.array([1, 0]) return b / norm
[docs]@contract(returns='S2', b='R3') def S2_project_from_R3(b): norm = np.linalg.norm(b) atol = 1e-8 # XXX if norm <= atol: return np.array([1, 0, 0]) return b / norm