Package geometry :: Package manifolds :: Module embedding_relations
[hide private]
[frames] | no frames]

Source Code for Module geometry.manifolds.embedding_relations

  1  from . import (DifferentiableManifold, SO3, SO2, R1, R2, R3, SE2, SE3, S2, S1, 
  2      T1, T2, T3, so2, so3, se2, se3, np, Tran2, tran2, tran3, Tran3, tran1) 
  3  from .. import (S1_project_from_S2, S2_from_S1, S1_project_from_R2, 
  4      S2_project_from_R3, se2_from_so2, so2_project_from_se2, se3_from_so3, 
  5      so3_project_from_se3, SE3_from_SO3, SE2_from_SO2, SO2_project_from_SE2, 
  6      SO3_project_from_SE3, R2_project_from_SE2, SE2_from_R2, SE3_from_R3, 
  7      R3_project_from_SE3, SO2_project_from_SO3, SO3_from_SO2, 
  8      so2_project_from_so3, 
  9      so3_from_so2, SE2_project_from_SE3, se2_project_from_se3, se3_from_se2, 
 10      SE3_from_SE2, SO2_from_angle, angle_from_SO2) 
 11  from geometry.spheres import normalize_pi 
 12   
 13   
14 -def embedding(small, big, embed_in, project_from, desc=None):
15 DifferentiableManifold.embedding(small, big, embed_in, project_from, 16 itype='user', desc=desc)
17 18
19 -def isomorphism(A, B, a_to_b, b_to_a, desc=None):
20 DifferentiableManifold.isomorphism(A, B, a_to_b, b_to_a, 21 itype='user', desc=desc)
22 23 embedding(R1, R2, lambda a: np.array([a[0], 0]), 24 lambda b: np.array([b[0]])) 25 embedding(R2, R3, lambda a: np.array([a[0], a[1], 0]), 26 lambda b: b[0:2]) 27 28 embedding(SO2, SO3, SO3_from_SO2, SO2_project_from_SO3) 29 embedding(so2, so3, so3_from_so2, so2_project_from_so3) 30 31 embedding(SO2, SE2, SE2_from_SO2, SO2_project_from_SE2) 32 embedding(SO3, SE3, SE3_from_SO3, SO3_project_from_SE3) 33 34 embedding(so3, se3, se3_from_so3, so3_project_from_se3) 35 embedding(so2, se2, se2_from_so2, so2_project_from_se2) 36 37 embedding(se2, se3, se3_from_se2, se2_project_from_se3) 38 embedding(SE2, SE3, SE3_from_SE2, SE2_project_from_SE3) 39 40 embedding(S1, S2, S2_from_S1, S1_project_from_S2) 41 42 embedding(S1, R2, lambda x: x, S1_project_from_R2) 43 embedding(S2, R3, lambda x: x, S2_project_from_R3) 44 45 embedding(R2, SE2, SE2_from_R2, R2_project_from_SE2) 46 embedding(R3, SE3, SE3_from_R3, R3_project_from_SE3) 47 48 isomorphism(T1, S1, lambda a: np.array([np.cos(float(a)), np.sin(float(a))]), 49 lambda b: normalize_pi(np.array([np.arctan2(b[1], b[0])]))) 50 isomorphism(T1, SO2, lambda x: SO2_from_angle(x[0]), 51 lambda y: np.array([angle_from_SO2(y)])) 52 53 54 embedding(T1, T2, lambda a: np.array([a[0], 0]), 55 lambda b: np.array([b[0]])) 56 embedding(T2, T3, lambda a: np.array([a[0], a[1], 0]), 57 lambda b: b[0:2]) 58 59 # TODO: more tori? 60 embedding(T1, R1, lambda x: x, lambda x: T1.normalize(x)) 61 embedding(T2, R2, lambda x: x, lambda x: T2.normalize(x)) 62 embedding(T3, R3, lambda x: x, lambda x: T3.normalize(x)) 63 64 embedding(tran1, tran2, lambda b: np.array([[0, 0, b[0, -1]], 65 [0, 0, 0], 66 [0, 0, 0]]), 67 lambda b: np.array([[0, b[0, -1]], 68 [0, 0]])) 69 70 71 embedding(tran2, tran3, lambda b: np.array([[0, 0, 0, b[0, -1]], 72 [0, 0, 0, b[1, -1]], 73 [0, 0, 0, 0], 74 [0, 0, 0, 0]]), 75 lambda b: np.array([[0, 0, b[0, -1]], 76 [0, 0, b[1, -1]], 77 [0, 0, 0]])) 78 79 80 embedding(tran2, se2, lambda x: x, 81 lambda b: np.array([[0, 0, b[0, 2]], 82 [0, 0, b[1, 2]], 83 [0, 0, 0]])) 84 85 embedding(tran3, se3, lambda x: x, 86 lambda b: np.array([[0, 0, 0, b[0, -1]], 87 [0, 0, 0, b[1, -1]], 88 [0, 0, 0, b[2, -1]], 89 [0, 0, 0, 0]])) 90 91 92 embedding(Tran2, SE2, lambda x: x, 93 lambda b: np.array([[1, 0, b[0, 2]], 94 [0, 1, b[1, 2]], 95 [0, 0, 1]])) 96 97 embedding(Tran3, SE3, lambda x: x, 98 lambda b: np.array([[1, 0, 0, b[0, -1]], 99 [0, 1, 0, b[1, -1]], 100 [0, 0, 1, b[2, -1]], 101 [0, 0, 0, 1]])) 102