fixed some bugs when faking Euclidean

This commit is contained in:
Zeno Rogue 2020-05-29 02:43:30 +02:00
parent ce299c1a0c
commit fca9834d02
3 changed files with 17 additions and 9 deletions

View File

@ -1189,6 +1189,9 @@ EX void generate() {
auto& cs = cgi.cellshape; auto& cs = cgi.cellshape;
cgi.loop = 4;
cgi.schmid = 3;
if(S7 == 6) { if(S7 == 6) {
cgi.adjcheck = 1; cgi.adjcheck = 1;
cgi.face = 4; cgi.face = 4;
@ -1245,6 +1248,8 @@ EX void generate() {
} }
} }
} }
reg3::make_vertices_only();
} }

View File

@ -1173,6 +1173,7 @@ EX struct fpattern& getcurrfp() {
fp.Prime = 11; fp.force_hash = 0x363D8DA4u; fp.solve(); fp.Prime = 11; fp.force_hash = 0x363D8DA4u; fp.solve();
return fp; return fp;
} }
if(!hyperbolic) return fp_invalid;
if(WDIM == 3 && !quotient && !hybri && !bt::in()) { if(WDIM == 3 && !quotient && !hybri && !bt::in()) {
static fpattern fp(0); static fpattern fp(0);
if(fp.Prime) return fp; if(fp.Prime) return fp;
@ -1180,7 +1181,6 @@ EX struct fpattern& getcurrfp() {
DEBB(DF_FIELD, ("set prime = ", fp.Prime)); DEBB(DF_FIELD, ("set prime = ", fp.Prime));
return fp; return fp;
} }
if(!hyperbolic) return fp_invalid;
if(S7 == 8 && S3 == 3 && !bt::in()) { if(S7 == 8 && S3 == 3 && !bt::in()) {
static fpattern fp(17); static fpattern fp(17);
return fp; return fp;

View File

@ -80,6 +80,16 @@ EX namespace reg3 {
cgi.ultra_mirrors.push_back(rspintox(v) * xpush(cgi.ultra_mirror_dist*2) * MirrorX * spintox(v)); cgi.ultra_mirrors.push_back(rspintox(v) * xpush(cgi.ultra_mirror_dist*2) * MirrorX * spintox(v));
} }
EX void make_vertices_only() {
auto& vertices_only = cgi.vertices_only;
vertices_only.clear();
for(hyperpoint h: cgi.cellshape) {
bool found = false;
for(hyperpoint h2: vertices_only) if(hdist(h, h2) < 1e-6) found = true;
if(!found) vertices_only.push_back(h);
}
}
EX void generate() { EX void generate() {
if(fake::in()) { if(fake::in()) {
@ -89,7 +99,6 @@ EX namespace reg3 {
int& loop = cgi.loop; int& loop = cgi.loop;
int& face = cgi.face; int& face = cgi.face;
auto& vertices_only = cgi.vertices_only;
auto& spins = cgi.spins; auto& spins = cgi.spins;
auto& cellshape = cgi.cellshape; auto& cellshape = cgi.cellshape;
auto& adjcheck = cgi.adjcheck; auto& adjcheck = cgi.adjcheck;
@ -241,13 +250,7 @@ EX namespace reg3 {
for(auto& v: cellshape) v = T * v; for(auto& v: cellshape) v = T * v;
} }
vertices_only.clear(); make_vertices_only();
for(hyperpoint h: cellshape) {
bool found = false;
for(hyperpoint h2: vertices_only) if(hdist(h, h2) < 1e-6) found = true;
if(!found) vertices_only.push_back(h);
}
compute_ultra(); compute_ultra();
for(int a=0; a<S7; a++) for(int a=0; a<S7; a++)