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):
17
18
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
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