for a given abcd matrix, apply it to ourself. If the matrix elements themselves are vectors, it is an on-axis transform with different x & y matrices. Such a matrox would look like ( ( (ax, ay), (by, by) ), ( (cx, cy), (dx, dy) ) ). If the matrix elements themselves are tensors, it is operating off axis. Such a matrox would look like ( ( ( ( axx, axy ) , ( ayx, ayy )), ( ( bxx, bxy ) , ( byx, byy )) ), ( ... ) ) Definition at line 245 of file general_optics.py. 00245 : 00246 """for a given abcd matrix, apply it to ourself. 00247 If the matrix elements themselves are vectors, it is an on-axis transform with different x & y matrices. 00248 Such a matrox would look like ( ( (ax, ay), (by, by) ), ( (cx, cy), (dx, dy) ) ). 00249 If the matrix elements themselves are tensors, it is operating off axis. 00250 Such a matrox would look like ( ( ( ( axx, axy ) , ( ayx, ayy )), ( ( bxx, bxy ) , ( byx, byy )) ), ( ... ) ) 00251 """ 00252 dot=Numeric.dot 00253 ar=Numeric.array 00254 a, b, c, d = [expand_to_2x2tensor(i) for i in ar(abcd).flat] 00255 q,r,s,t=(a+dot(b, self.qit)).flat 00256 inverse=ar(((t,-r),(-s,q))) / (q*t-r*s) 00257 self.qit=dot(c+dot(d, self.qit), inverse) 00258 def drift(self, length):
|