2
2
from numpy import empty , float64
3
3
4
4
@dataclass
5
- class MatVec :
5
+ class Mat :
6
6
mat : f64 [2 , 2 ]
7
+
8
+ @dataclass
9
+ class Vec :
7
10
vec : f64 [2 ]
8
11
12
+ @dataclass
13
+ class MatVec :
14
+ mat : Mat
15
+ vec : Vec
16
+
9
17
def rotate (mat_vec : MatVec ) -> f64 [2 ]:
10
18
rotated_vec : f64 [2 ] = empty (2 , dtype = float64 )
11
- rotated_vec [0 ] = mat_vec .mat [0 , 0 ] * mat_vec .vec [0 ] + mat_vec .mat [0 , 1 ] * mat_vec .vec [1 ]
12
- rotated_vec [1 ] = mat_vec .mat [1 , 0 ] * mat_vec .vec [0 ] + mat_vec .mat [1 , 1 ] * mat_vec .vec [1 ]
19
+ rotated_vec [0 ] = mat_vec .mat . mat [0 , 0 ] * mat_vec .vec . vec [0 ] + mat_vec .mat . mat [0 , 1 ] * mat_vec . vec .vec [1 ]
20
+ rotated_vec [1 ] = mat_vec .mat . mat [1 , 0 ] * mat_vec .vec . vec [0 ] + mat_vec .mat . mat [1 , 1 ] * mat_vec . vec .vec [1 ]
13
21
return rotated_vec
14
22
15
- def test_rotate_by_90 () :
23
+ def create_MatVec_obj () -> MatVec :
16
24
mat : f64 [2 , 2 ] = empty ((2 , 2 ), dtype = float64 )
17
25
vec : f64 [2 ] = empty (2 , dtype = float64 )
18
26
mat [0 , 0 ] = 0.0
@@ -21,9 +29,15 @@ def test_rotate_by_90():
21
29
mat [1 , 1 ] = 0.0
22
30
vec [0 ] = 1.0
23
31
vec [1 ] = 0.0
24
- mat_vec : MatVec = MatVec (mat , vec )
25
- print (mat_vec .mat [0 , 0 ], mat_vec .mat [0 , 1 ], mat_vec .mat [1 , 0 ], mat_vec .mat [1 , 1 ])
26
- print (mat_vec .vec [0 ], mat_vec .vec [1 ])
32
+ mat_s : Mat = Mat (mat )
33
+ vec_s : Vec = Vec (vec )
34
+ mat_vec : MatVec = MatVec (mat_s , vec_s )
35
+ return mat_vec
36
+
37
+ def test_rotate_by_90 ():
38
+ mat_vec : MatVec = create_MatVec_obj ()
39
+ print (mat_vec .mat .mat [0 , 0 ], mat_vec .mat .mat [0 , 1 ], mat_vec .mat .mat [1 , 0 ], mat_vec .mat .mat [1 , 1 ])
40
+ print (mat_vec .vec .vec [0 ], mat_vec .vec .vec [1 ])
27
41
rotated_vec : f64 [2 ] = rotate (mat_vec )
28
42
print (rotated_vec [0 ], rotated_vec [1 ])
29
43
assert abs (rotated_vec [0 ] - 0.0 ) <= 1e-12
0 commit comments