1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-08-03 04:13:55 +00:00

removed rotmatrix as it did exactly the same as cspin

This commit is contained in:
Zeno Rogue 2019-08-09 23:59:32 +02:00
parent 9588dfcc50
commit 2cf6abb273
6 changed files with 34 additions and 43 deletions

View File

@ -32,10 +32,10 @@ transmatrix getOrientation() {
lasttick = curtick; lasttick = curtick;
Uint8 *keystate = SDL_GetKeyState(NULL); Uint8 *keystate = SDL_GetKeyState(NULL);
if(keystate[SDLK_LCTRL]) { if(keystate[SDLK_LCTRL]) {
if(keystate['s']) Orient = Orient * rotmatrix(t, 2, 1); if(keystate['s']) Orient = Orient * cspin(2, 1, t);
if(keystate['w']) Orient = Orient * rotmatrix(t, 1, 2); if(keystate['w']) Orient = Orient * cspin(1, 2, t);
if(keystate['a']) Orient = Orient * rotmatrix(t, 2, 0); if(keystate['a']) Orient = Orient * cspin(2, 0, t);
if(keystate['d']) Orient = Orient * rotmatrix(t, 0, 2); if(keystate['d']) Orient = Orient * cspin(0, 2, t);
} }
return Orient; return Orient;
} }

View File

@ -726,15 +726,6 @@ bool operator == (hyperpoint h1, hyperpoint h2) {
// rotation matrix in R^3 // rotation matrix in R^3
EX transmatrix rotmatrix(double rotation, int c0, int c1) {
transmatrix t = Id;
t[c0][c0] = cos(rotation);
t[c1][c1] = cos(rotation);
t[c0][c1] = sin(rotation);
t[c1][c0] = -sin(rotation);
return t;
}
EX hyperpoint mid3(hyperpoint h1, hyperpoint h2, hyperpoint h3) { EX hyperpoint mid3(hyperpoint h1, hyperpoint h2, hyperpoint h3) {
return mid(h1+h2+h3, h1+h2+h3); return mid(h1+h2+h3, h1+h2+h3);
} }

View File

@ -175,9 +175,9 @@ transmatrix getOrientation() {
beta = EM_ASM_DOUBLE({ return rotation_beta; }); beta = EM_ASM_DOUBLE({ return rotation_beta; });
gamma = EM_ASM_DOUBLE({ return rotation_gamma; }); gamma = EM_ASM_DOUBLE({ return rotation_gamma; });
return return
rotmatrix(alpha * degree, 0, 1) * cspin(0, 1, alpha * degree) *
rotmatrix(beta * degree, 1, 2) * cspin(1, 2, beta * degree) *
rotmatrix(gamma * degree, 0, 2); cspin(0, 2, gamma * degree);
} }
#endif #endif

View File

@ -256,7 +256,7 @@ void make_twopoint(ld& x, ld& y) {
hyperpoint mobius(hyperpoint h, ld angle, ld scale = 1) { hyperpoint mobius(hyperpoint h, ld angle, ld scale = 1) {
h = perspective_to_space(h * scale, 1, gcSphere); h = perspective_to_space(h * scale, 1, gcSphere);
h = rotmatrix(angle * degree, 1, 2) * h; h = cspin(1, 2, angle * degree) * h;
return space_to_perspective(h, 1) / scale; return space_to_perspective(h, 1) / scale;
} }

40
rug.cpp
View File

@ -1554,7 +1554,7 @@ bool handlekeys(int sym, int uni) {
crystal::switch_z_coordinate(); crystal::switch_z_coordinate();
else else
#endif #endif
apply_rotation(rotmatrix(M_PI, 0, 2)); apply_rotation(cspin(0, 2, M_PI));
return true; return true;
} }
else if(NUMBERKEY == '3') { else if(NUMBERKEY == '3') {
@ -1563,7 +1563,7 @@ bool handlekeys(int sym, int uni) {
crystal::flip_z(); crystal::flip_z();
else else
#endif #endif
apply_rotation(rotmatrix(M_PI/2, 0, 2)); apply_rotation(cspin(0, 2, M_PI/2));
return true; return true;
} }
#if CAP_CRYSTAL #if CAP_CRYSTAL
@ -1581,12 +1581,12 @@ bool handlekeys(int sym, int uni) {
move_forward(-.1); move_forward(-.1);
return true; return true;
} }
else if(sym == SDLK_HOME) { apply_rotation(rotmatrix(.1, 0, 1)); return true; } else if(sym == SDLK_HOME) { apply_rotation(cspin(0, 1, .1)); return true; }
else if(sym == SDLK_END) { apply_rotation(rotmatrix(.1, 1, 0)); return true; } else if(sym == SDLK_END) { apply_rotation(cspin(1, 0, .1)); return true; }
else if(sym == SDLK_DOWN) { apply_rotation(rotmatrix(.1, 2, 1)); return true; } else if(sym == SDLK_DOWN) { apply_rotation(cspin(2, 1, .1)); return true; }
else if(sym == SDLK_UP) { apply_rotation(rotmatrix(.1, 1, 2)); return true; } else if(sym == SDLK_UP) { apply_rotation(cspin(1, 2, .1)); return true; }
else if(sym == SDLK_LEFT) { apply_rotation(rotmatrix(.1, 2, 0)); return true; } else if(sym == SDLK_LEFT) { apply_rotation(cspin(2, 0, .1)); return true; }
else if(sym == SDLK_RIGHT) { apply_rotation(rotmatrix(.1, 0, 2)); return true; } else if(sym == SDLK_RIGHT) { apply_rotation(cspin(0, 2, .1)); return true; }
#endif #endif
else return false; else return false;
} }
@ -1659,13 +1659,13 @@ void actDraw() {
if(finger_center) if(finger_center)
perform_finger(); perform_finger();
else { else {
if(keystate[SDLK_HOME]) qm++, t = t * rotmatrix(alpha, 0, 1), protractor += alpha; if(keystate[SDLK_HOME]) qm++, t = t * cspin(0, 1, alpha), protractor += alpha;
if(keystate[SDLK_END]) qm++, t = t * rotmatrix(alpha, 1, 0), protractor -= alpha; if(keystate[SDLK_END]) qm++, t = t * cspin(1, 0, alpha), protractor -= alpha;
if(!keystate[SDLK_LSHIFT]) { if(!keystate[SDLK_LSHIFT]) {
if(keystate[SDLK_DOWN]) qm++, t = t * rotmatrix(alpha, 2, 1), protractor += alpha; if(keystate[SDLK_DOWN]) qm++, t = t * cspin(2, 1, alpha), protractor += alpha;
if(keystate[SDLK_UP]) qm++, t = t * rotmatrix(alpha, 1, 2), protractor -= alpha; if(keystate[SDLK_UP]) qm++, t = t * cspin(1, 2, alpha), protractor -= alpha;
if(keystate[SDLK_LEFT]) qm++, t = t * rotmatrix(alpha, 2, 0), protractor += alpha; if(keystate[SDLK_LEFT]) qm++, t = t * cspin(2, 0, alpha), protractor += alpha;
if(keystate[SDLK_RIGHT]) qm++, t = t * rotmatrix(alpha, 0, 2), protractor -= alpha; if(keystate[SDLK_RIGHT]) qm++, t = t * cspin(0, 2, alpha), protractor -= alpha;
} }
if(keystate[SDLK_PAGEDOWN]) push -= alpha; if(keystate[SDLK_PAGEDOWN]) push -= alpha;
if(keystate[SDLK_PAGEUP]) push += alpha; if(keystate[SDLK_PAGEUP]) push += alpha;
@ -1698,13 +1698,13 @@ void actDraw() {
if(keystate[SDLK_HOME] && !in_crystal()) qm++, t = inverse(currentrot); if(keystate[SDLK_HOME] && !in_crystal()) qm++, t = inverse(currentrot);
if(keystate[SDLK_END]) { if(keystate[SDLK_END]) {
qm++; qm++;
if(in_crystal()) t = t * rotmatrix(alpha, 0, 1); if(in_crystal()) t = t * cspin(0, 1, alpha);
else t = currentrot * rotmatrix(alpha, 0, 1) * inverse(currentrot); else t = currentrot * cspin(0, 1, alpha) * inverse(currentrot);
} }
if(keystate[SDLK_DOWN]) qm++, t = t * rotmatrix(alpha, 1, 2); if(keystate[SDLK_DOWN]) qm++, t = t * cspin(1, 2, alpha);
if(keystate[SDLK_UP]) qm++, t = t * rotmatrix(alpha, 2, 1); if(keystate[SDLK_UP]) qm++, t = t * cspin(2, 1, alpha);
if(keystate[SDLK_LEFT]) qm++, t = t * rotmatrix(alpha, 0, 2); if(keystate[SDLK_LEFT]) qm++, t = t * cspin(0, 2, alpha);
if(keystate[SDLK_RIGHT]) qm++, t = t * rotmatrix(alpha, 2, 0); if(keystate[SDLK_RIGHT]) qm++, t = t * cspin(2, 0, alpha);
if(keystate[SDLK_PAGEUP]) model_distance /= exp(alpha * ruggospeed); if(keystate[SDLK_PAGEUP]) model_distance /= exp(alpha * ruggospeed);
if(keystate[SDLK_PAGEDOWN]) model_distance *= exp(alpha * ruggospeed); if(keystate[SDLK_PAGEDOWN]) model_distance *= exp(alpha * ruggospeed);
} }

View File

@ -669,12 +669,12 @@ EX void apply() {
#if CAP_RUG #if CAP_RUG
if(rug::rugged) { if(rug::rugged) {
if(rug_rotation1) { if(rug_rotation1) {
rug::apply_rotation(rotmatrix(rug_angle * degree, 1, 2)); rug::apply_rotation(cspin(1, 2, rug_angle * degree));
rug::apply_rotation(rotmatrix(rug_rotation1 * 2 * M_PI * t / period, 0, 2)); rug::apply_rotation(cspin(0, 2, rug_rotation1 * 2 * M_PI * t / period));
rug::apply_rotation(rotmatrix(-rug_angle * degree, 1, 2)); rug::apply_rotation(cspin(1, 2, -rug_angle * degree));
} }
if(rug_rotation2) { if(rug_rotation2) {
rug::apply_rotation(rug::currentrot * rotmatrix(rug_rotation2 * 2 * M_PI * t / period, 0, 1) * inverse(rug::currentrot)); rug::apply_rotation(rug::currentrot * cspin(0, 1, rug_rotation2 * 2 * M_PI * t / period) * inverse(rug::currentrot));
} }
} }
#endif #endif
@ -1141,9 +1141,9 @@ void perspective() {
void rug() { void rug() {
dynamicval<bool> b(rug::rugged, true); dynamicval<bool> b(rug::rugged, true);
rug::physics(); rug::physics();
rug::apply_rotation(rotmatrix(ticks / 3000., 1, 2)); rug::apply_rotation(cspin(1, 2, ticks / 3000.));
gamescreen(2); gamescreen(2);
rug::apply_rotation(rotmatrix(-ticks / 3000., 1, 2)); rug::apply_rotation(cspin(1, 2, -ticks / 3000.));
} }
#endif #endif