1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-05-02 15:34:05 +00:00

intra:: fixed product spaces

This commit is contained in:
Zeno Rogue 2023-11-23 22:11:15 +01:00
parent 9d4d085973
commit 79165ae014

View File

@ -163,7 +163,7 @@ EX portal_data make_portal(cellwalker cw, int spin) {
#if CAP_BT #if CAP_BT
if(bt::in()) { if(bt::in()) {
for(auto h: fac) for(auto h: fac)
println(hlog, PIU(deparabolic13(cgi.emb->normalize_flat(h)))); println(hlog, PIU(deparabolic13(cgi.emb->flatten(h))));
if(cw.spin == cw.at->type - 2) if(cw.spin == cw.at->type - 2)
fac.pop_back(); fac.pop_back();
else else
@ -176,7 +176,7 @@ EX portal_data make_portal(cellwalker cw, int spin) {
else { else {
hyperpoint ctr = Hypc; hyperpoint ctr = Hypc;
for(auto p: fac) ctr += product_decompose(p).second; for(auto p: fac) ctr += product_decompose(p).second;
ctr = cgi.emb->normalize_flat(ctr); ctr = cgi.emb->flatten(ctr);
id.T = gpushxto0(ctr); id.T = gpushxto0(ctr);
} }
} }
@ -185,8 +185,8 @@ EX portal_data make_portal(cellwalker cw, int spin) {
id.v0 = Hypc; id.v0 = Hypc;
id.scale = cgi.plevel; id.scale = cgi.plevel;
for(auto p: fac) id.v0 += p; for(auto p: fac) id.v0 += p;
id.v0 = cgi.emb->normalize_flat(id.v0); id.v0 = cgi.emb->flatten(id.v0);
hyperpoint h = cgi.emb->normalize_flat(fac[0]); hyperpoint h = cgi.emb->flatten(fac[0]);
id.T = cspin90(1, 0) * spintox(gpushxto0(id.v0) * h) * gpushxto0(id.v0); id.T = cspin90(1, 0) * spintox(gpushxto0(id.v0) * h) * gpushxto0(id.v0);
if((id.T * C0)[0] > 0) id.T = spin180() * id.T; if((id.T * C0)[0] > 0) id.T = spin180() * id.T;
for(int i=0; i<3; i++) id.T[3][i] = id.T[i][3] = i==3; for(int i=0; i<3; i++) id.T[3][i] = id.T[i][3] = i==3;