@@ -13,39 +13,45 @@ def normalize(vec):
1313def project_vector (x , y , z , matrix ):
1414 vec = np .dot (matrix , pad_ones (x , y , z ))
1515
16- return vec [0 ]/ vec [3 ], vec [1 ]/ vec [3 ], vec [2 ]/ vec [3 ]
16+ return vec [0 ] / vec [3 ], vec [1 ] / vec [3 ], vec [2 ] / vec [3 ]
1717
1818
1919def get_look_at_matrix (eye , center , up ):
2020 n = normalize (eye - center )
2121 u = normalize (np .cross (up , n ))
2222 v = np .cross (n , u )
2323
24- matrix_r = [[u [0 ], u [1 ], u [2 ], 0 ],
25- [v [0 ], v [1 ], v [2 ], 0 ],
26- [n [0 ], n [1 ], n [2 ], 0 ],
27- [0 , 0 , 0 , 1 ]]
24+ matrix_r = [
25+ [u [0 ], u [1 ], u [2 ], 0 ],
26+ [v [0 ], v [1 ], v [2 ], 0 ],
27+ [n [0 ], n [1 ], n [2 ], 0 ],
28+ [0 , 0 , 0 , 1 ],
29+ ]
2830
29- matrix_t = [[1 , 0 , 0 , - eye [0 ]],
30- [0 , 1 , 0 , - eye [1 ]],
31- [0 , 0 , 1 , - eye [2 ]],
32- [0 , 0 , 0 , 1 ]]
31+ matrix_t = [
32+ [1 , 0 , 0 , - eye [0 ]],
33+ [0 , 1 , 0 , - eye [1 ]],
34+ [0 , 0 , 1 , - eye [2 ]],
35+ [0 , 0 , 0 , 1 ],
36+ ]
3337
3438 return np .dot (matrix_r , matrix_t )
3539
3640
3741def get_perspective_matrix (fovy , aspect , near , far ):
38- f = 1. / tan (fovy * pi / 360. )
42+ f = 1.0 / tan (fovy * pi / 360.0 )
3943
40- return np .array ([
41- [f / aspect , 0 , 0 , 0 ],
42- [ 0 , f , 0 , 0 ],
43- [ 0 , 0 , (near + far )/ (near - far ), 2 * near * far / (near - far )],
44- [ 0 , 0 , - 1 , 0 ]
45- ])
44+ return np .array (
45+ [
46+ [f / aspect , 0 , 0 , 0 ],
47+ [0 , f , 0 , 0 ],
48+ [0 , 0 , (near + far ) / (near - far ), 2 * near * far / (near - far )],
49+ [0 , 0 , - 1 , 0 ],
50+ ]
51+ )
4652
4753
48- class OrbitCamera () :
54+ class OrbitCamera :
4955
5056 def __init__ (self , radius , center , aspect , near = 0 , far = 8 ):
5157 self .radius = radius
@@ -60,7 +66,7 @@ def update_position(self, elev, azim):
6066 self .elev = elev
6167 self .azim = azim
6268
63- relev , razim = np .pi * self .elev / 180 , np .pi * self .azim / 180
69+ relev , razim = np .pi * self .elev / 180 , np .pi * self .azim / 180
6470
6571 xp = self .center [0 ] + cos (razim ) * cos (relev ) * self .radius
6672 yp = self .center [1 ] + sin (razim ) * cos (relev ) * self .radius
@@ -69,7 +75,7 @@ def update_position(self, elev, azim):
6975 self .position = np .array ((xp , yp , zp ))
7076 self .front = self .center - self .position
7177
72- if abs (relev ) > pi / 2. :
78+ if abs (relev ) > pi / 2.0 :
7379 self .up = np .array ((0 , 0 , - 1 ))
7480 else :
7581 self .up = np .array ((0 , 0 , 1 ))
@@ -78,5 +84,7 @@ def update_position(self, elev, azim):
7884
7985 def update_matrix (self ):
8086 self .view_matrix = get_look_at_matrix (self .position , self .center , self .up )
81- self .projection_matrix = get_perspective_matrix (50 , self .aspect , self .near , self .far )
87+ self .projection_matrix = get_perspective_matrix (
88+ 50 , self .aspect , self .near , self .far
89+ )
8290 self .matrix = np .dot (self .projection_matrix , self .view_matrix )
0 commit comments