1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-11-27 14:37:16 +00:00

improved vectodir and calcMousedest

This commit is contained in:
Zeno Rogue 2018-07-16 20:06:09 +02:00
parent c8c1e3a346
commit 59ab37d509

View File

@ -53,20 +53,20 @@ bool mouseout2() {
movedir vectodir(const hyperpoint& P) { movedir vectodir(const hyperpoint& P) {
hyperpoint H = sphereflip * tC0(cwtV); transmatrix U = shmup::ggmatrix(cwt.c);
ld R = sqrt(H[0] * H[0] + H[1] * H[1]);
transmatrix Centered = sphereflip * cwtV; hyperpoint H = sphereflip * tC0(U);
if(!euclid) transmatrix Centered = rgpushxto0(H) * sphereflip;
Centered = gpushxto0(H) * Centered;
else if(R > 1e-9)
Centered = eupush(-H[0], -H[1]) * Centered;
ld binv = 99; ld binv = 99;
if(euclid) Centered = pispin * Centered;
ld dirdist[MAX_EDGE]; ld dirdist[MAX_EDGE];
for(int i=0; i<cwt.c->type; i++) { for(int i=0; i<cwt.c->type; i++) {
dirdist[i] = intval(Centered * ddspin(cwt.c, i, 0) * xpush(-.5) * C0, P); transmatrix T;
if(compute_relamatrix(cwt.c->mov[fixdir(cwt.spin + i, cwt.c)], cwt.c, i, T)) {
dirdist[i] = intval(U * T * C0, Centered * P);
}
//xspinpush0(-i * 2 * M_PI /cwt.c->type, .5), P); //xspinpush0(-i * 2 * M_PI /cwt.c->type, .5), P);
} }
@ -109,8 +109,16 @@ void calcMousedest() {
ld dists[MAX_EDGE]; ld dists[MAX_EDGE];
for(int i=0; i<cwt.c->type; i++) transmatrix U = shmup::ggmatrix(cwt.c);
dists[i] = intval(mouseh, tC0(confusingGeometry() ? shmup::ggmatrix(cwt.c) * shmup::calc_relative_matrix(cwt.c->mov[i], cwt.c, i) : shmup::ggmatrix(cwt.c->mov[i])));
for(int i=0; i<cwt.c->type; i++) {
transmatrix T;
if(compute_relamatrix(cwt.c->mov[i], cwt.c, i, T))
dists[i] = intval(mouseh, U * T * C0);
else
dists[i] = HUGE_VAL;
}
// confusingGeometry() ? shmup::ggmatrix(cwt.c) * shmup::calc_relative_matrix(cwt.c->mov[i], cwt.c, i) : shmup::ggmatrix(cwt.c->mov[i])));
/* printf("curcell = %Lf\n", mousedist); /* printf("curcell = %Lf\n", mousedist);
for(int i=0; i<cwt.c->type; i++) for(int i=0; i<cwt.c->type; i++)