1
1
/*
2
2
* Twin - A Tiny Window System
3
3
* Copyright (c) 2004 Keith Packard <keithp@keithp.com>
4
+ * Copyright (c) 2024 National Cheng Kung University, Taiwan
4
5
* All rights reserved.
5
6
*/
6
7
@@ -11,9 +12,9 @@ void twin_matrix_multiply(twin_matrix_t *result,
11
12
const twin_matrix_t * b )
12
13
{
13
14
twin_matrix_t r ;
14
- twin_fixed_t t ;
15
15
16
- for (int row = 0 ; row < 3 ; row ++ )
16
+ for (int row = 0 ; row < 3 ; row ++ ) {
17
+ twin_fixed_t t ;
17
18
for (int col = 0 ; col < 2 ; col ++ ) {
18
19
if (row == 2 )
19
20
t = b -> m [2 ][col ];
@@ -23,6 +24,7 @@ void twin_matrix_multiply(twin_matrix_t *result,
23
24
t += twin_fixed_mul (a -> m [row ][n ], b -> m [n ][col ]);
24
25
r .m [row ][col ] = t ;
25
26
}
27
+ }
26
28
27
29
* result = r ;
28
30
}
@@ -72,14 +74,13 @@ void twin_matrix_scale(twin_matrix_t *m, twin_fixed_t sx, twin_fixed_t sy)
72
74
twin_fixed_t _twin_matrix_determinant (twin_matrix_t * matrix )
73
75
{
74
76
twin_fixed_t a , b , c , d ;
75
- twin_fixed_t det ;
76
77
77
78
a = matrix -> m [0 ][0 ];
78
79
b = matrix -> m [0 ][1 ];
79
80
c = matrix -> m [1 ][0 ];
80
81
d = matrix -> m [1 ][1 ];
81
82
82
- det = twin_fixed_mul (a , d ) - twin_fixed_mul (b , c );
83
+ twin_fixed_t det = twin_fixed_mul (a , d ) - twin_fixed_mul (b , c );
83
84
84
85
return det ;
85
86
}
@@ -99,31 +100,32 @@ twin_point_t _twin_matrix_expand(twin_matrix_t *matrix)
99
100
100
101
void twin_matrix_rotate (twin_matrix_t * m , twin_angle_t a )
101
102
{
102
- twin_matrix_t t ;
103
103
twin_fixed_t c , s ;
104
104
twin_sincos (a , & s , & c );
105
105
106
- t .m [0 ][0 ] = c ;
107
- t .m [0 ][1 ] = s ;
108
- t .m [1 ][0 ] = - s ;
109
- t .m [1 ][1 ] = c ;
110
- t .m [2 ][0 ] = 0 ;
111
- t .m [2 ][1 ] = 0 ;
106
+ twin_matrix_t t = {
107
+ .m [0 ][0 ] = c ,
108
+ .m [0 ][1 ] = s ,
109
+ .m [1 ][0 ] = - s ,
110
+ .m [1 ][1 ] = c ,
111
+ .m [2 ][0 ] = 0 ,
112
+ .m [2 ][1 ] = 0 ,
113
+ };
112
114
twin_matrix_multiply (m , & t , m );
113
115
}
114
116
115
117
twin_sfixed_t _twin_matrix_x (twin_matrix_t * m , twin_fixed_t x , twin_fixed_t y )
116
118
{
117
- twin_sfixed_t s ;
118
- s = twin_fixed_to_sfixed (twin_fixed_mul (m -> m [0 ][0 ], x ) +
119
+ twin_sfixed_t s =
120
+ twin_fixed_to_sfixed (twin_fixed_mul (m -> m [0 ][0 ], x ) +
119
121
twin_fixed_mul (m -> m [1 ][0 ], y ) + m -> m [2 ][0 ]);
120
122
return s ;
121
123
}
122
124
123
125
twin_sfixed_t _twin_matrix_y (twin_matrix_t * m , twin_fixed_t x , twin_fixed_t y )
124
126
{
125
- twin_sfixed_t s ;
126
- s = twin_fixed_to_sfixed (twin_fixed_mul (m -> m [0 ][1 ], x ) +
127
+ twin_sfixed_t s =
128
+ twin_fixed_to_sfixed (twin_fixed_mul (m -> m [0 ][1 ], x ) +
127
129
twin_fixed_mul (m -> m [1 ][1 ], y ) + m -> m [2 ][1 ]);
128
130
return s ;
129
131
}
0 commit comments