def __init__(self, size, data=None): self.size = size if data is None: self.matrix = identity(self.size) else: self.matrix = data self.c_matrix = common.conv_list_2d(self.matrix, common.GLfloat)
def __imul__(self, other): if isinstance(other, Matrix): if other.size != self.size: errText = 'size {}, expected {}'.format(other.size, self.size) raise ValueError(errText) else: self.matrix = matrix_multiply(self.matrix, other.matrix) self.c_matrix = common.conv_list_2d(self.matrix, common.GLfloat) return self else: return NotImplemented
def i_inverse(self): ''' Calculate the inverse of Matrix instance in-place. ''' if self.size == 2: self.matrix = inverse2(self.matrix) elif self.size == 3: self.matrix = inverse3(self.matrix) elif self.size == 4: self.matrix = inverse4(self.matrix) else: raise NotImplementedError('Matrix inverse of size {} not implemented.'.format(self.size)) self.c_matrix = common.conv_list_2d(self.matrix, common.GLfloat) return self
def i_inverse(self): ''' Calculate the inverse of Matrix instance in-place. ''' if self.size == 2: self.matrix = inverse2(self.matrix) elif self.size == 3: self.matrix = inverse3(self.matrix) elif self.size == 4: self.matrix = inverse4(self.matrix) else: raise NotImplementedError( 'Matrix inverse of size {} not implemented.'.format(self.size)) self.c_matrix = common.conv_list_2d(self.matrix, common.GLfloat) return self
def i_transpose(self): ''' Transpose Matrix instance in-place. ''' self.matrix = transpose(self.matrix) self.c_matrix = common.conv_list_2d(self.matrix, common.GLfloat) return self