@@ -21,12 +21,13 @@ def transMatrix(x, y, z):
21
21
T = [ [1. ,0. ,0. ,0. ], [0. ,1. ,0. ,0. ], [0. ,0. ,1. ,0. ], [x ,y ,z ,1 ] ]
22
22
return T
23
23
24
- def rotMatrix (x , y , z , angDeg ):
24
+ def rotMatrix (angDeg , x , y , z ):
25
25
26
26
#Based on https://github.com/freedreno/mesa/blob/383558c56427b0e8b4e56cce8737771ad053f753/src/mesa/math/m_matrix.c
27
27
M = identityMatrix ()
28
- s = math .sin (math .radians (angDeg ))
29
- c = math .cos (math .radians (angDeg ))
28
+ angRad = math .radians (angDeg )
29
+ s = math .sin (- angRad )
30
+ c = math .cos (- angRad )
30
31
mag = math .sqrt (x * x + y * y + z * z )
31
32
32
33
if mag <= 1.0e-4 :
@@ -105,27 +106,27 @@ def rotMatrix(x, y, z, angDeg):
105
106
row0 [0 ] = (one_c * xx ) + c ;
106
107
row0 [1 ] = (one_c * xy ) - zs ;
107
108
row0 [2 ] = (one_c * zx ) + ys ;
108
- # row0[3] = 0.0F ;
109
+ # row0[3] = 0.0 ;
109
110
110
111
row1 = M [1 ]
111
112
row1 [0 ] = (one_c * xy ) + zs ;
112
113
row1 [1 ] = (one_c * yy ) + c ;
113
114
row1 [2 ] = (one_c * yz ) - xs ;
114
- # row1[3] = 0.0F ;
115
+ # row1[3] = 0.0 ;
115
116
116
117
row2 = M [2 ]
117
118
row2 [0 ] = (one_c * zx ) - ys ;
118
119
row2 [1 ] = (one_c * yz ) + xs ;
119
120
row2 [2 ] = (one_c * zz ) + c ;
120
- # row2[3] = 0.0F ;
121
+ # row2[3] = 0.0 ;
121
122
122
123
# row3 = M[3]
123
- # row3[0] = 0.0F ;
124
- # row3[1] = 0.0F ;
125
- # row3[2] = 0.0F ;
126
- # row3[3] = 1.0F ;
124
+ # row3[0] = 0.0 ;
125
+ # row3[1] = 0.0 ;
126
+ # row3[2] = 0.0 ;
127
+ # row3[3] = 1.0 ;
127
128
128
- return M
129
+ return np . array ( M )
129
130
130
131
131
132
if __name__ == "__main__" :
@@ -155,17 +156,15 @@ def rotMatrix(x, y, z, angDeg):
155
156
trans = np .array (transMatrix (* vec ))
156
157
mat = np .dot (trans , mat )
157
158
print "predicted 1" , mat
158
- gl .glLoadMatrixf (list (mat .reshape (mat .size )))
159
-
159
+
160
160
vec = list (4. * np .random .random ((1 ,3 ))[0 ] - 2. )
161
161
ang = 4. * math .pi * np .random .random () - 2
162
- print vec , ang
163
- gl .glRotated (vec [0 ], vec [1 ], vec [2 ], ang )
162
+ gl .glRotated (ang , vec [0 ], vec [1 ], vec [2 ])
164
163
correct = gl .glGetFloatv (gl .GL_MODELVIEW_MATRIX )
165
164
print "correct 2" , correct
166
165
167
- rot = np .array (rotMatrix (vec [0 ], vec [1 ], vec [2 ], ang ))
166
+ rot = np .array (rotMatrix (ang , vec [0 ], vec [1 ], vec [2 ]))
168
167
mat = np .dot (rot , mat )
169
168
print "predicted 2" , mat
170
- gl . glLoadMatrixf ( list ( mat . reshape ( mat . size )))
169
+
171
170
0 commit comments