Revision 322c0d59
utility/matrix.h | ||
---|---|---|
192 | 192 |
return ret; |
193 | 193 |
} |
194 | 194 |
|
195 |
double determinant() |
|
195 |
double determinant() const
|
|
196 | 196 |
{ |
197 | 197 |
if(N == 1) |
198 | 198 |
return cell(0, 0); |
... | ... | |
206 | 206 |
return det; |
207 | 207 |
} |
208 | 208 |
|
209 |
Matrix invert() |
|
209 |
Matrix invert() const
|
|
210 | 210 |
{ |
211 | 211 |
Matrix ret; |
212 | 212 |
float det = determinant(); |
213 | 213 |
|
214 |
for(int x = 0; x < N; x++)
|
|
214 |
for (int i = 0; i < N; i++)
|
|
215 | 215 |
{ |
216 |
for(int y = 0; y < N; y++)
|
|
216 |
for (int j = 0; j < N; j++)
|
|
217 | 217 |
{ |
218 |
Matrix<N-1> minor = minor_matrix(y, x); |
|
219 |
ret(x, y) = det*minor.determinant(); |
|
220 |
if( (x+y)%2 == 1) |
|
221 |
ret(x, y) = -ret(x, y); |
|
218 |
ret(i, j) = minor_matrix(j, i).determinant() / det; |
|
219 |
if ((i+j)%2 == 1) |
|
220 |
ret(i, j) = -ret(i, j); |
|
222 | 221 |
} |
223 | 222 |
} |
224 | 223 |
return ret; |
Also available in: Unified diff