aperiodic is now distinct from kite::in
This commit is contained in:
parent
732d80965f
commit
acfa454114
|
@ -1487,7 +1487,7 @@ EX bool good_for_wall(cell *c) {
|
||||||
|
|
||||||
EX bool walls_not_implemented() {
|
EX bool walls_not_implemented() {
|
||||||
// if(WDIM == 3 && !PURE) return true;
|
// if(WDIM == 3 && !PURE) return true;
|
||||||
if(sphere || quotient || nonisotropic || (kite::in() && !bt::in()) || experimental) return true;
|
if(sphere || quotient || nonisotropic || aperiodic || experimental) return true;
|
||||||
return WDIM == 3 && (cgflags & qIDEAL);
|
return WDIM == 3 && (cgflags & qIDEAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
6
cell.cpp
6
cell.cpp
|
@ -598,7 +598,7 @@ EX int celldist(cell *c) {
|
||||||
return hybrid::celldistance(c, currentmap->gamestart());
|
return hybrid::celldistance(c, currentmap->gamestart());
|
||||||
if(nil && !quotient) return DISTANCE_UNKNOWN;
|
if(nil && !quotient) return DISTANCE_UNKNOWN;
|
||||||
if(euc::in()) return celldistance(currentmap->gamestart(), c);
|
if(euc::in()) return celldistance(currentmap->gamestart(), c);
|
||||||
if(sphere || bt::in() || WDIM == 3 || cryst || sn::in() || kite::in() || closed_manifold) return celldistance(currentmap->gamestart(), c);
|
if(sphere || bt::in() || WDIM == 3 || cryst || sn::in() || aperiodic || closed_manifold) return celldistance(currentmap->gamestart(), c);
|
||||||
#if CAP_IRR
|
#if CAP_IRR
|
||||||
if(IRREGULAR) return irr::celldist(c, false);
|
if(IRREGULAR) return irr::celldist(c, false);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1298,7 +1298,7 @@ EX int celldistance(cell *c1, cell *c2) {
|
||||||
return euc::cyldist(euc2_coordinates(c1), euc2_coordinates(c2));
|
return euc::cyldist(euc2_coordinates(c1), euc2_coordinates(c2));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(arcm::in() || quotient || sn::in() || (kite::in() && euclid) || experimental || sl2 || nil || arb::in())
|
if(arcm::in() || quotient || sn::in() || (aperiodic && euclid) || experimental || sl2 || nil || arb::in())
|
||||||
return clueless_celldistance(c1, c2);
|
return clueless_celldistance(c1, c2);
|
||||||
|
|
||||||
if(S3 >= OINF) return inforder::celldistance(c1, c2);
|
if(S3 >= OINF) return inforder::celldistance(c1, c2);
|
||||||
|
@ -1547,7 +1547,7 @@ EX vector<int> reverse_directions(heptagon *c, int dir) {
|
||||||
}
|
}
|
||||||
|
|
||||||
EX bool standard_tiling() {
|
EX bool standard_tiling() {
|
||||||
return !arcm::in() && !kite::in() && !bt::in() && !arb::in() && (WDIM == 2 || !nonisotropic) && !mhybrid;
|
return !arcm::in() && !aperiodic && !bt::in() && !arb::in() && (WDIM == 2 || !nonisotropic) && !mhybrid;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX int valence() {
|
EX int valence() {
|
||||||
|
|
|
@ -1776,7 +1776,7 @@ void celldrawer::draw_features_and_walls_3d() {
|
||||||
/* always render */
|
/* always render */
|
||||||
if(wrl::in && wrl::print) ; else
|
if(wrl::in && wrl::print) ; else
|
||||||
#endif
|
#endif
|
||||||
if(pmodel == mdPerspective && !sphere && !quotient && !kite::in() && !nonisotropic && !mhybrid && !experimental && !nih) {
|
if(pmodel == mdPerspective && !sphere && !quotient && !aperiodic && !nonisotropic && !mhybrid && !experimental && !nih) {
|
||||||
if(a < 4 && among(geometry, gHoroTris, gBinary3) && celldistAlt(c) >= celldistAlt(centerover)) continue;
|
if(a < 4 && among(geometry, gHoroTris, gBinary3) && celldistAlt(c) >= celldistAlt(centerover)) continue;
|
||||||
else if(a < 2 && among(geometry, gHoroRec) && celldistAlt(c) >= celldistAlt(centerover)) continue;
|
else if(a < 2 && among(geometry, gHoroRec) && celldistAlt(c) >= celldistAlt(centerover)) continue;
|
||||||
// this optimization is not correct, need to fix
|
// this optimization is not correct, need to fix
|
||||||
|
|
|
@ -826,6 +826,8 @@ static const flagtype qSTRETCHABLE = Flag(27);
|
||||||
|
|
||||||
static const flagtype qCAT = Flag(28);
|
static const flagtype qCAT = Flag(28);
|
||||||
|
|
||||||
|
static const flagtype qAPERIODIC = Flag(29);
|
||||||
|
|
||||||
// note: dnext assumes that x&7 equals 7
|
// note: dnext assumes that x&7 equals 7
|
||||||
static const int SEE_ALL = 50;
|
static const int SEE_ALL = 50;
|
||||||
// note: check_football_colorability in arbitrile.cpp assumes OINF is divisible by 3
|
// note: check_football_colorability in arbitrile.cpp assumes OINF is divisible by 3
|
||||||
|
@ -925,7 +927,7 @@ EX vector<geometryinfo> ginf = {
|
||||||
{"{5,3,4}","field", "{5,3,4} field quotient space", "f435", 12, 4, qsSMALLBF | qDEPRECATED, giHyperb3, {{SEE_ALL, SEE_ALL}}, eVariation::pure},
|
{"{5,3,4}","field", "{5,3,4} field quotient space", "f435", 12, 4, qsSMALLBF | qDEPRECATED, giHyperb3, {{SEE_ALL, SEE_ALL}}, eVariation::pure},
|
||||||
{"binary4","none", "standard binary tiling", "binary4", 5, 3, qBINARY, giHyperb2, {{7, 5}}, eVariation::pure},
|
{"binary4","none", "standard binary tiling", "binary4", 5, 3, qBINARY, giHyperb2, {{7, 5}}, eVariation::pure},
|
||||||
{"sol", "none", "Solv geometry", "sol", 8, 3, qBINARY|qSOL, giSol, {{7, 5}}, eVariation::pure},
|
{"sol", "none", "Solv geometry", "sol", 8, 3, qBINARY|qSOL, giSol, {{7, 5}}, eVariation::pure},
|
||||||
{"kd2", "none", "kite-and-dart", "kd2", 4, 3, qKITE, giEuclid2, {{7, 7}}, eVariation::pure},
|
{"kd2", "none", "kite-and-dart", "kd2", 4, 3, qKITE | qAPERIODIC, giEuclid2, {{7, 7}}, eVariation::pure},
|
||||||
{"kd3", "none", "kite-and-dart on horospheres", "kd3", 12, 3, qsBP, giHyperb3, {{7, 3}}, eVariation::pure},
|
{"kd3", "none", "kite-and-dart on horospheres", "kd3", 12, 3, qsBP, giHyperb3, {{7, 3}}, eVariation::pure},
|
||||||
{"nil", "none", "Nil geometry", "nil", 6, 3, qOPTQ, giNil, {{7, 5}}, eVariation::pure},
|
{"nil", "none", "Nil geometry", "nil", 6, 3, qOPTQ, giNil, {{7, 5}}, eVariation::pure},
|
||||||
{"product","none", "product space", "product", 7, 3, qHYBRID, giProduct, {{7, 3}}, eVariation::pure},
|
{"product","none", "product space", "product", 7, 3, qHYBRID, giProduct, {{7, 3}}, eVariation::pure},
|
||||||
|
|
|
@ -1179,7 +1179,7 @@ EX namespace mirror {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
EX bool build(cell *c) {
|
EX bool build(cell *c) {
|
||||||
if(kite::in() || sol) return false;
|
if(aperiodic || sol) return false;
|
||||||
#if CAP_GP
|
#if CAP_GP
|
||||||
if(GOLDBERG) {
|
if(GOLDBERG) {
|
||||||
if(c == c->master->c7) {
|
if(c == c->master->c7) {
|
||||||
|
@ -1311,7 +1311,7 @@ EX namespace mirror {
|
||||||
|
|
||||||
EX void createMirrors(cellwalker cw, int cpid) {
|
EX void createMirrors(cellwalker cw, int cpid) {
|
||||||
|
|
||||||
if(kite::in() || sol) return;
|
if(aperiodic || sol) return;
|
||||||
|
|
||||||
#if CAP_ARCM
|
#if CAP_ARCM
|
||||||
if(arcm::in()) {
|
if(arcm::in()) {
|
||||||
|
|
|
@ -398,7 +398,7 @@ EX bool sizes_known() {
|
||||||
if(bt::in()) return false;
|
if(bt::in()) return false;
|
||||||
// not implemented
|
// not implemented
|
||||||
if(arcm::in()) return false;
|
if(arcm::in()) return false;
|
||||||
if(kite::in()) return false;
|
if(aperiodic) return false;
|
||||||
if(currentmap->strict_tree_rules()) return true;
|
if(currentmap->strict_tree_rules()) return true;
|
||||||
if(arb::in()) return false;
|
if(arb::in()) return false;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1113,7 +1113,7 @@ EX struct dqi_poly *draw_shapevec(cell *c, const shiftmatrix& V, const vector<hp
|
||||||
#endif
|
#endif
|
||||||
else if(GOLDBERG && ishex1(c))
|
else if(GOLDBERG && ishex1(c))
|
||||||
return &queuepolyat(V * pispin, shv[0], col, prio);
|
return &queuepolyat(V * pispin, shv[0], col, prio);
|
||||||
else if(!(S7&1) && PURE && !kite::in() && !a4) {
|
else if(!(S7&1) && PURE && !aperiodic && !a4) {
|
||||||
auto si = patterns::getpatterninfo(c, patterns::PAT_COLORING, 0);
|
auto si = patterns::getpatterninfo(c, patterns::PAT_COLORING, 0);
|
||||||
if(si.id == 8) si.dir++;
|
if(si.id == 8) si.dir++;
|
||||||
transmatrix D = applyPatterndir(c, si);
|
transmatrix D = applyPatterndir(c, si);
|
||||||
|
|
10
geom-exp.cpp
10
geom-exp.cpp
|
@ -322,7 +322,7 @@ void set_or_configure_geometry(eGeometry g) {
|
||||||
if(g == gRotSpace) {
|
if(g == gRotSpace) {
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
if(arcm::in()) ok = PURE;
|
if(arcm::in()) ok = PURE;
|
||||||
else if(bt::in() || kite::in()) ok = false;
|
else if(bt::in() || aperiodic) ok = false;
|
||||||
else ok = PURE || BITRUNCATED;
|
else ok = PURE || BITRUNCATED;
|
||||||
if(!ok) {
|
if(!ok) {
|
||||||
addMessage(XLAT("Only works with (semi-)regular tilings"));
|
addMessage(XLAT("Only works with (semi-)regular tilings"));
|
||||||
|
@ -602,7 +602,7 @@ EX void select_quotient_screen() {
|
||||||
}
|
}
|
||||||
|
|
||||||
EX void select_quotient() {
|
EX void select_quotient() {
|
||||||
if(meuclid && !kite::in() && !arcm::in() && !reg3::cubes_reg3) {
|
if(meuclid && !aperiodic && !arcm::in() && !reg3::cubes_reg3) {
|
||||||
euc::prepare_torus3();
|
euc::prepare_torus3();
|
||||||
pushScreen(euc::show_torus3);
|
pushScreen(euc::show_torus3);
|
||||||
}
|
}
|
||||||
|
@ -640,7 +640,7 @@ EX void select_quotient() {
|
||||||
EX string full_geometry_name() {
|
EX string full_geometry_name() {
|
||||||
string qstring = ginf[geometry].quotient_name;
|
string qstring = ginf[geometry].quotient_name;
|
||||||
bool variable =
|
bool variable =
|
||||||
!(mproduct || mhybrid || bt::in() || (WDIM == 3 && !reg3::in()) || kite::in() || arb::in());
|
!(mproduct || mhybrid || bt::in() || (WDIM == 3 && !reg3::in()) || aperiodic || arb::in());
|
||||||
|
|
||||||
string fgname = XLAT(ginf[geometry].tiling_name);
|
string fgname = XLAT(ginf[geometry].tiling_name);
|
||||||
if(qstring != "none") fgname += " " + XLAT(qstring);
|
if(qstring != "none") fgname += " " + XLAT(qstring);
|
||||||
|
@ -1025,7 +1025,7 @@ EX void showEuclideanMenu() {
|
||||||
else if(nil) {
|
else if(nil) {
|
||||||
menuitem_nilwidth('v');
|
menuitem_nilwidth('v');
|
||||||
}
|
}
|
||||||
else if((WDIM == 3 || kite::in() || arb::in()) && !reg3::in() && geometry != gCubeTiling) dialog::addBreak(100);
|
else if((WDIM == 3 || aperiodic || arb::in()) && !reg3::in() && geometry != gCubeTiling) dialog::addBreak(100);
|
||||||
else
|
else
|
||||||
menuitem_change_variation('v');
|
menuitem_change_variation('v');
|
||||||
|
|
||||||
|
@ -1131,7 +1131,7 @@ EX void showEuclideanMenu() {
|
||||||
dialog::addTitle(XLAT("info about: %1", full_geometry_name()), 0xFFFFFF, 150);
|
dialog::addTitle(XLAT("info about: %1", full_geometry_name()), 0xFFFFFF, 150);
|
||||||
|
|
||||||
auto gd = compute_geometry_data();
|
auto gd = compute_geometry_data();
|
||||||
if(WDIM == 2 && !arb::in() && !kite::in()) dialog::addSelItem(XLAT("faces per vertex"), gd.spf, 0);
|
if(WDIM == 2 && !arb::in() && !aperiodic) dialog::addSelItem(XLAT("faces per vertex"), gd.spf, 0);
|
||||||
|
|
||||||
if(arb::in() && arb::current.comment != "") {
|
if(arb::in() && arb::current.comment != "") {
|
||||||
dialog::addBreak(100);
|
dialog::addBreak(100);
|
||||||
|
|
|
@ -447,7 +447,7 @@ void hrmap_hyperbolic::virtualRebase(heptagon*& base, transmatrix& at) {
|
||||||
}
|
}
|
||||||
|
|
||||||
EX bool no_easy_spin() {
|
EX bool no_easy_spin() {
|
||||||
return NONSTDVAR || arcm::in() || WDIM == 3 || bt::in() || kite::in();
|
return NONSTDVAR || arcm::in() || WDIM == 3 || bt::in() || aperiodic;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX bool never_invert;
|
EX bool never_invert;
|
||||||
|
@ -479,7 +479,7 @@ EX ld cellgfxdist(cell *c, int d) { return currentmap->spacedist(c, d); }
|
||||||
EX transmatrix ddspin_side(cell *c, int d, ld bonus IS(0)) {
|
EX transmatrix ddspin_side(cell *c, int d, ld bonus IS(0)) {
|
||||||
if(cgi.emb->is_in_noniso())
|
if(cgi.emb->is_in_noniso())
|
||||||
return spin(bonus);
|
return spin(bonus);
|
||||||
if(kite::in()) {
|
if(aperiodic) {
|
||||||
if(embedded_plane) return spin(bonus);
|
if(embedded_plane) return spin(bonus);
|
||||||
hyperpoint h1 = get_corner_position(c, gmod(d, c->type), 3);
|
hyperpoint h1 = get_corner_position(c, gmod(d, c->type), 3);
|
||||||
hyperpoint h2 = get_corner_position(c, gmod(d+1, c->type) , 3);
|
hyperpoint h2 = get_corner_position(c, gmod(d+1, c->type) , 3);
|
||||||
|
@ -492,7 +492,7 @@ EX transmatrix ddspin_side(cell *c, int d, ld bonus IS(0)) {
|
||||||
EX transmatrix iddspin_side(cell *c, int d, ld bonus IS(0)) {
|
EX transmatrix iddspin_side(cell *c, int d, ld bonus IS(0)) {
|
||||||
if(cgi.emb->is_in_noniso())
|
if(cgi.emb->is_in_noniso())
|
||||||
return spin(bonus);
|
return spin(bonus);
|
||||||
if(kite::in()) {
|
if(aperiodic) {
|
||||||
if(embedded_plane) return spin(bonus);
|
if(embedded_plane) return spin(bonus);
|
||||||
hyperpoint h1 = get_corner_position(c, gmod(d, c->type), 3);
|
hyperpoint h1 = get_corner_position(c, gmod(d, c->type), 3);
|
||||||
hyperpoint h2 = get_corner_position(c, gmod(d+1, c->type) , 3);
|
hyperpoint h2 = get_corner_position(c, gmod(d+1, c->type) , 3);
|
||||||
|
@ -561,7 +561,7 @@ transmatrix hrmap_standard::adj(cell *c, int i) {
|
||||||
EX double randd() { return (rand() + .5) / (RAND_MAX + 1.); }
|
EX double randd() { return (rand() + .5) / (RAND_MAX + 1.); }
|
||||||
|
|
||||||
EX hyperpoint randomPointIn(int t) {
|
EX hyperpoint randomPointIn(int t) {
|
||||||
if(NONSTDVAR || arcm::in() || kite::in()) {
|
if(NONSTDVAR || arcm::in() || aperiodic) {
|
||||||
// Let these geometries be less confusing.
|
// Let these geometries be less confusing.
|
||||||
// Also easier to implement ;)
|
// Also easier to implement ;)
|
||||||
return xspinpush0(TAU * randd(), asinh(randd() / 20));
|
return xspinpush0(TAU * randd(), asinh(randd() / 20));
|
||||||
|
@ -674,7 +674,7 @@ EX hyperpoint nearcorner(cell *c, int i) {
|
||||||
neis[5] = bt::get_horopoint(0, -1);
|
neis[5] = bt::get_horopoint(0, -1);
|
||||||
return neis[i];
|
return neis[i];
|
||||||
}
|
}
|
||||||
if(kite::in()) {
|
if(aperiodic) {
|
||||||
if(approx_nearcorner)
|
if(approx_nearcorner)
|
||||||
return currentmap->get_corner(c, i, 3) + currentmap->get_corner(c, i+1, 3) - C0;
|
return currentmap->get_corner(c, i, 3) + currentmap->get_corner(c, i+1, 3) - C0;
|
||||||
else
|
else
|
||||||
|
@ -741,7 +741,7 @@ EX hyperpoint farcorner(cell *c, int i, int which) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if CAP_BT
|
#if CAP_BT
|
||||||
if(bt::in() || kite::in())
|
if(bt::in() || aperiodic)
|
||||||
return nearcorner(c, (i+which) % c->type); // lazy
|
return nearcorner(c, (i+which) % c->type); // lazy
|
||||||
#endif
|
#endif
|
||||||
#if CAP_ARCM
|
#if CAP_ARCM
|
||||||
|
@ -870,7 +870,7 @@ int brm_hook = addHook(hooks_clearmemory, 0, []() {
|
||||||
});
|
});
|
||||||
|
|
||||||
EX bool exhaustive_distance_appropriate() {
|
EX bool exhaustive_distance_appropriate() {
|
||||||
if(euclid && (kite::in() || arcm::in() || arb::in() || quotient)) return true;
|
if(euclid && (aperiodic || arcm::in() || arb::in() || quotient)) return true;
|
||||||
#if MAXMDIM >= 4
|
#if MAXMDIM >= 4
|
||||||
if(nil && quotient) return true;
|
if(nil && quotient) return true;
|
||||||
#endif
|
#endif
|
||||||
|
|
1
hyper.h
1
hyper.h
|
@ -200,6 +200,7 @@ void addMessage(string s, char spamtype = 0);
|
||||||
|
|
||||||
#define INVERSE among(variation, eVariation::unrectified, eVariation::warped, eVariation::untruncated )
|
#define INVERSE among(variation, eVariation::unrectified, eVariation::warped, eVariation::untruncated )
|
||||||
|
|
||||||
|
#define aperiodic (cgflags & qAPERIODIC)
|
||||||
#define UNRECTIFIED (variation == eVariation::unrectified)
|
#define UNRECTIFIED (variation == eVariation::unrectified)
|
||||||
#define WARPED (variation == eVariation::warped)
|
#define WARPED (variation == eVariation::warped)
|
||||||
#define UNTRUNCATED (variation == eVariation::untruncated)
|
#define UNTRUNCATED (variation == eVariation::untruncated)
|
||||||
|
|
|
@ -891,7 +891,7 @@ EX land_validity_t& land_validity(eLand l) {
|
||||||
return dont_work;
|
return dont_work;
|
||||||
|
|
||||||
// mirrors do not work in kite and sol
|
// mirrors do not work in kite and sol
|
||||||
if(among(l, laMirror, laMirrorOld) && (kite::in() || sol))
|
if(among(l, laMirror, laMirrorOld) && (aperiodic || sol))
|
||||||
return dont_work;
|
return dont_work;
|
||||||
|
|
||||||
if(isCrossroads(l) && geometry == gBinary4)
|
if(isCrossroads(l) && geometry == gBinary4)
|
||||||
|
@ -1033,7 +1033,7 @@ EX land_validity_t& land_validity(eLand l) {
|
||||||
return special_chaos;
|
return special_chaos;
|
||||||
return not_in_chaos;
|
return not_in_chaos;
|
||||||
}
|
}
|
||||||
if(arcm::in() || kite::in()) return not_implemented;
|
if(arcm::in() || aperiodic) return not_implemented;
|
||||||
if(closed_or_bounded) return unbounded_only;
|
if(closed_or_bounded) return unbounded_only;
|
||||||
if(INVERSE) return not_implemented;
|
if(INVERSE) return not_implemented;
|
||||||
}
|
}
|
||||||
|
@ -1193,7 +1193,7 @@ EX land_validity_t& land_validity(eLand l) {
|
||||||
return great_walls_missing;
|
return great_walls_missing;
|
||||||
|
|
||||||
// highlight Crossroads on Euclidean
|
// highlight Crossroads on Euclidean
|
||||||
if(euclid && !quotient && (l == laCrossroads || l == laCrossroads4) && !kite::in())
|
if(euclid && !quotient && (l == laCrossroads || l == laCrossroads4) && !aperiodic)
|
||||||
return full_game;
|
return full_game;
|
||||||
|
|
||||||
if(sol && among(l, laCrossroads, laCrossroads4))
|
if(sol && among(l, laCrossroads, laCrossroads4))
|
||||||
|
|
|
@ -1752,7 +1752,7 @@ EX namespace product {
|
||||||
|
|
||||||
EX bool validate_spin() {
|
EX bool validate_spin() {
|
||||||
if(mproduct) return hybrid::in_underlying_geometry(validate_spin);
|
if(mproduct) return hybrid::in_underlying_geometry(validate_spin);
|
||||||
if(kite::in()) return false;
|
if(aperiodic) return false;
|
||||||
if(!quotient && !arcm::in()) return true;
|
if(!quotient && !arcm::in()) return true;
|
||||||
map<cell*, cellwalker> cws;
|
map<cell*, cellwalker> cws;
|
||||||
manual_celllister cl;
|
manual_celllister cl;
|
||||||
|
|
|
@ -900,7 +900,7 @@ EX namespace patterns {
|
||||||
if(IRREGULAR || arcm::in() || bt::in() || arb::in() || WDIM == 3 || currentmap->strict_tree_rules()) si.symmetries = c->type;
|
if(IRREGULAR || arcm::in() || bt::in() || arb::in() || WDIM == 3 || currentmap->strict_tree_rules()) si.symmetries = c->type;
|
||||||
else if(a46) val46(c, si, sub, pat);
|
else if(a46) val46(c, si, sub, pat);
|
||||||
else if(a38) val38(c, si, sub, pat);
|
else if(a38) val38(c, si, sub, pat);
|
||||||
else if(S7 < 6 && S3 == 3 && !INVERSE && !kite::in()) valSibling(c, si, sub, pat);
|
else if(S7 < 6 && S3 == 3 && !INVERSE && !aperiodic) valSibling(c, si, sub, pat);
|
||||||
else if(euc::in(2,4)) valEuclid4(c, si, sub);
|
else if(euc::in(2,4)) valEuclid4(c, si, sub);
|
||||||
else if(euc::in(2,6)) valEuclid6(c, si, sub);
|
else if(euc::in(2,6)) valEuclid6(c, si, sub);
|
||||||
else if(a4) val457(c, si, sub);
|
else if(a4) val457(c, si, sub);
|
||||||
|
@ -1287,14 +1287,14 @@ EX bool geosupport_chessboard() {
|
||||||
#endif
|
#endif
|
||||||
WARPED ? true :
|
WARPED ? true :
|
||||||
INVERSE ? false :
|
INVERSE ? false :
|
||||||
(bt::in() || kite::in()) ? 0 :
|
(bt::in() || aperiodic) ? 0 :
|
||||||
(S3 >= OINF) ? true :
|
(S3 >= OINF) ? true :
|
||||||
(valence() % 2 == 0);
|
(valence() % 2 == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
EX int geosupport_threecolor() {
|
EX int geosupport_threecolor() {
|
||||||
if(IRREGULAR) return 0;
|
if(IRREGULAR) return 0;
|
||||||
if(kite::in() || bt::in()) return 0;
|
if(aperiodic || bt::in()) return 0;
|
||||||
#if CAP_ARCM
|
#if CAP_ARCM
|
||||||
if(arcm::in() && PURE) return arcm::current.support_threecolor();
|
if(arcm::in() && PURE) return arcm::current.support_threecolor();
|
||||||
if(arcm::in() && BITRUNCATED) return arcm::current.support_threecolor_bitruncated();
|
if(arcm::in() && BITRUNCATED) return arcm::current.support_threecolor_bitruncated();
|
||||||
|
@ -1317,7 +1317,7 @@ EX int geosupport_football() {
|
||||||
// always works in bitrunc geometries
|
// always works in bitrunc geometries
|
||||||
if(BITRUNCATED) return 2;
|
if(BITRUNCATED) return 2;
|
||||||
if(INVERSE) return 0;
|
if(INVERSE) return 0;
|
||||||
if(bt::in() || kite::in()) return 0;
|
if(bt::in() || aperiodic) return 0;
|
||||||
|
|
||||||
#if CAP_ARCM
|
#if CAP_ARCM
|
||||||
if(arcm::in() && DUAL) return false;
|
if(arcm::in() && DUAL) return false;
|
||||||
|
|
|
@ -122,7 +122,7 @@ EX bool available() {
|
||||||
if(noGUI) return false;
|
if(noGUI) return false;
|
||||||
if(!vid.usingGL) return false;
|
if(!vid.usingGL) return false;
|
||||||
if(GDIM == 2) return false;
|
if(GDIM == 2) return false;
|
||||||
if(WDIM == 2 && (kite::in() || bt::in())) return false;
|
if(WDIM == 2 && (aperiodic || bt::in())) return false;
|
||||||
#ifdef GLES_ONLY
|
#ifdef GLES_ONLY
|
||||||
if(need_many_cell_types()) return false;
|
if(need_many_cell_types()) return false;
|
||||||
if(!euclid && !gproduct && !nil) return false;
|
if(!euclid && !gproduct && !nil) return false;
|
||||||
|
|
|
@ -2553,7 +2553,7 @@ EX void show() {
|
||||||
"tessellations (contrary to the basic implementation of Archimedean, tes, and unrectified/warped/untruncated tessellations).\n\nYou can convert mostly any "
|
"tessellations (contrary to the basic implementation of Archimedean, tes, and unrectified/warped/untruncated tessellations).\n\nYou can convert mostly any "
|
||||||
"non-spherical periodic 2D tessellation to strict tree based.\n\nSwitching the map format erases your map."));
|
"non-spherical periodic 2D tessellation to strict tree based.\n\nSwitching the map format erases your map."));
|
||||||
|
|
||||||
if(kite::in()) {
|
if(aperiodic) {
|
||||||
dialog::addInfo("not available in aperiodic tessellations");
|
dialog::addInfo("not available in aperiodic tessellations");
|
||||||
dialog::addBack();
|
dialog::addBack();
|
||||||
dialog::display();
|
dialog::display();
|
||||||
|
|
|
@ -1410,7 +1410,7 @@ EX void set_geometry(eGeometry target) {
|
||||||
if(DUAL && geometry != gArchimedean && !mhybrid)
|
if(DUAL && geometry != gArchimedean && !mhybrid)
|
||||||
variation = ginf[geometry].default_variation;
|
variation = ginf[geometry].default_variation;
|
||||||
#if CAP_BT
|
#if CAP_BT
|
||||||
if(bt::in() || WDIM == 3 || kite::in() || arb::in()) if(!mhybrid) variation = eVariation::pure;
|
if(bt::in() || WDIM == 3 || aperiodic || arb::in()) if(!mhybrid) variation = eVariation::pure;
|
||||||
#endif
|
#endif
|
||||||
if(S3 >= OINF) variation = eVariation::pure;
|
if(S3 >= OINF) variation = eVariation::pure;
|
||||||
if(INVERSE && !mhybrid) variation = gp::variation_for(gp::param);
|
if(INVERSE && !mhybrid) variation = gp::variation_for(gp::param);
|
||||||
|
@ -1444,7 +1444,7 @@ EX void set_variation(eVariation target) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(target != eVariation::pure) {
|
if(target != eVariation::pure) {
|
||||||
if(bt::in() || sol || kite::in() || WDIM == 3) if(!mproduct) geometry = gNormal;
|
if(bt::in() || sol || aperiodic || WDIM == 3) if(!mproduct) geometry = gNormal;
|
||||||
}
|
}
|
||||||
auto& cd = ginf[gCrystal];
|
auto& cd = ginf[gCrystal];
|
||||||
if(target == eVariation::bitruncated && cryst && cd.sides == 8 && cd.vertex == 4) {
|
if(target == eVariation::bitruncated && cryst && cd.sides == 8 && cd.vertex == 4) {
|
||||||
|
|
Loading…
Reference in New Issue