the rotation fix did not work in SL2
This commit is contained in:
parent
bc102b000d
commit
35a502ae9a
|
@ -877,6 +877,14 @@ EX void orthonormalize(transmatrix& T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** fix a 3D rotation matrix */
|
||||||
|
EX void fix_rotation(transmatrix& rot) {
|
||||||
|
dynamicval<eGeometry> g(geometry, gSphere);
|
||||||
|
fixmatrix(rot);
|
||||||
|
for(int i=0; i<3; i++) rot[i][3] = rot[3][i] = 0;
|
||||||
|
rot[3][3] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/** determinant 2x2 */
|
/** determinant 2x2 */
|
||||||
EX ld det2(const transmatrix& T) {
|
EX ld det2(const transmatrix& T) {
|
||||||
return T[0][0] * T[1][1] - T[0][1] * T[1][0];
|
return T[0][0] * T[1][1] - T[0][1] * T[1][0];
|
||||||
|
|
|
@ -2791,7 +2791,7 @@ EX namespace nisot {
|
||||||
transmatrix push = eupush( tC0(T) );
|
transmatrix push = eupush( tC0(T) );
|
||||||
transmatrix push_back = eupush(tC0(T), -1);
|
transmatrix push_back = eupush(tC0(T), -1);
|
||||||
transmatrix gtl = push_back * T;
|
transmatrix gtl = push_back * T;
|
||||||
{ dynamicval<eGeometry> g(geometry, gSphere); hr::fixmatrix(gtl); }
|
fix_rotation(gtl);
|
||||||
T = push * gtl;
|
T = push * gtl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -176,7 +176,7 @@ void fix_to_2(transmatrix& T) {
|
||||||
if(nonisotropic) {
|
if(nonisotropic) {
|
||||||
hyperpoint h = tC0(T);
|
hyperpoint h = tC0(T);
|
||||||
transmatrix rot = gpushxto0(h) * T;
|
transmatrix rot = gpushxto0(h) * T;
|
||||||
{ dynamicval<eGeometry> g(geometry, gSphere); fixmatrix(rot); }
|
fix_rotation(rot);
|
||||||
T = rgpushxto0(h) * rot;
|
T = rgpushxto0(h) * rot;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue