mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-23 21:07:17 +00:00
inverse3 function
This commit is contained in:
parent
4bddeedaf8
commit
191ef35d21
@ -916,20 +916,23 @@ void inverse_error(const transmatrix& T) {
|
||||
}
|
||||
|
||||
/** inverse */
|
||||
EX transmatrix inverse(const transmatrix& T) {
|
||||
if(MDIM == 3) {
|
||||
ld d = det(T);
|
||||
transmatrix T2;
|
||||
if(d == 0) {
|
||||
inverse_error(T);
|
||||
return Id;
|
||||
}
|
||||
|
||||
for(int i=0; i<3; i++)
|
||||
for(int j=0; j<3; j++)
|
||||
T2[j][i] = (T[(i+1)%3][(j+1)%3] * T[(i+2)%3][(j+2)%3] - T[(i+1)%3][(j+2)%3] * T[(i+2)%3][(j+1)%3]) / d;
|
||||
return T2;
|
||||
EX transmatrix inverse3(const transmatrix& T) {
|
||||
ld d = det(T);
|
||||
transmatrix T2;
|
||||
if(d == 0) {
|
||||
inverse_error(T);
|
||||
return Id;
|
||||
}
|
||||
|
||||
for(int i=0; i<3; i++)
|
||||
for(int j=0; j<3; j++)
|
||||
T2[j][i] = (T[(i+1)%3][(j+1)%3] * T[(i+2)%3][(j+2)%3] - T[(i+1)%3][(j+2)%3] * T[(i+2)%3][(j+1)%3]) / d;
|
||||
return T2;
|
||||
}
|
||||
|
||||
EX transmatrix inverse(const transmatrix& T) {
|
||||
if(MDIM == 3)
|
||||
return inverse3(T);
|
||||
else {
|
||||
transmatrix T1 = T;
|
||||
transmatrix T2 = Id;
|
||||
|
Loading…
Reference in New Issue
Block a user