Package geometry :: Module spheres_embedding
[hide private]
[frames] | no frames]

Source Code for Module geometry.spheres_embedding

 1  from . import contract, np 
2 3 4 @contract(returns='S2', a='S1') 5 -def S2_from_S1(a):
6 return np.array([a[0], a[1], 0])
7
8 9 @contract(returns='S1', b='S2') 10 -def S1_project_from_S2(b):
11 if np.abs(b[2]) == 1: 12 return np.array([1, 0]) 13 theta = np.arctan2(b[1], b[0]) 14 return np.array([np.cos(theta), np.sin(theta)])
15
16 17 @contract(returns='S1', b='R2') 18 -def S1_project_from_R2(b):
19 norm = np.linalg.norm(b) 20 atol = 1e-8 # XXX 21 if norm <= atol: 22 return np.array([1, 0]) 23 return b / norm
24
25 26 @contract(returns='S2', b='R3') 27 -def S2_project_from_R3(b):
28 norm = np.linalg.norm(b) 29 atol = 1e-8 # XXX 30 if norm <= atol: 31 return np.array([1, 0, 0]) 32 return b / norm
33