racing:: better track generation in periodic Euclidean/Nil

This commit is contained in:
Zeno Rogue 2019-11-02 22:21:53 +01:00
parent 47a1d77ee4
commit 2760e5aaf0
1 changed files with 13 additions and 4 deletions

View File

@ -279,13 +279,20 @@ void find_track(cell *start, int sign, int len) {
forCellEx(c1, c) if(!bad(c1, c) && !parent.count(c1)) {
parent[c1] = c;
int id;
if(nil) {
switch(sign) {
/* if(nil && !nilv::nilperiod[0]) {
switch(sign) {
case 1: id = c1->master->zebraval - start->master->zebraval; break;
case 2: id = start->master->emeraldval - c1->master->emeraldval; break;
case 3: id = start->master->zebraval - c1->master->zebraval; break;
case 4: id = start->master->emeraldval - c1->master->emeraldval; break;
}
} */
if(nil && !quotient) {
switch(sign) {
case 1: id = c1->master->emeraldval - start->master->emeraldval; break;
case 2: case 3: id = start->master->fieldval - c1->master->fieldval; break;
case 4: id = start->master->emeraldval - c1->master->emeraldval; break;
}
}
else if(solnih)
id = (start->master->distance - c1->master->distance) * sign;
@ -295,7 +302,8 @@ void find_track(cell *start, int sign, int len) {
}
}
if(euclid && (penrose || archimedean)) permanent_long_distances(goal);
if(euclid && (penrose || archimedean || quotient)) permanent_long_distances(goal);
if(nil && quotient) permanent_long_distances(goal);
if(solnih || nil || sl2) {
vector<cell*> p;
@ -433,7 +441,8 @@ EX void generate_track() {
makeEmpty(s);
cview(); // needed for some virtualRebases
if(euclid && (penrose || archimedean)) permanent_long_distances(s);
if(euclid && (penrose || archimedean || quotient)) permanent_long_distances(s);
if(nil && quotient) permanent_long_distances(s);
bounded_track = false;