arb:: simplified display of apeirogons

This commit is contained in:
Zeno Rogue 2022-05-01 11:18:39 +02:00
parent 292bb72794
commit d3864a2e2c
5 changed files with 25 additions and 3 deletions

View File

@ -1037,8 +1037,16 @@ EX bool is_apeirogonal(cell *c) {
return current_or_slided().shapes[id_of(c->master)].apeirogonal;
}
EX bool is_apeirogonal() {
if(!in()) return false;
for(auto& sh: current_or_slided().shapes)
if(sh.apeirogonal) return true;
return false;
}
EX bool apeirogon_consistent_coloring = true;
EX bool apeirogon_hide_grid_edges = true;
EX bool apeirogon_simplified_display = false;
EX transmatrix get_adj(arbi_tiling& c, int t, int dl, int t1, int xdl) {

View File

@ -650,6 +650,8 @@ EX void initConfig() {
-> editable("apeirogon_consistent_coloring", 'c');
param_b(arb::apeirogon_hide_grid_edges, "apeirogon_hide_grid_edges", true)
-> editable("apeirogon_hide_grid_edges", 'h');
param_b(arb::apeirogon_simplified_display, "apeirogon_simplified_display", false)
-> editable("simplified display of apeirogons", 'f');
param_b(display_yasc_codes, "yasc", false)
-> editable("YASC codes", 'Y')

View File

@ -353,8 +353,17 @@ namespace irr { void generate_floorshapes(); }
void geometry_information::finish_apeirogon(hyperpoint center) {
last->flags |= POLY_APEIROGONAL;
last->she = isize(hpc);
hpcpush(center);
hpcpush(starting_point);
if(arb::apeirogon_simplified_display) {
hyperpoint p = towards_inf(last_point, center, ideal_limit);
hyperpoint q = towards_inf(starting_point, center, ideal_limit);
hpc.push_back(p);
hpc_connect_ideal(p, q);
hpc.push_back(q);
}
else {
hpcpush(center);
hpcpush(starting_point);
}
}
// !siid equals pseudohept(c)

View File

@ -980,6 +980,7 @@ EX void showEuclideanMenu() {
dialog::addItem(XLAT("tessellation sliders"), '4');
dialog::add_action_push(arb::set_sliders);
}
if(arb::is_apeirogonal()) add_edit(arb::apeirogon_simplified_display);
#if MAXMDIM >= 4
if(cgflags & qULTRA) {

View File

@ -1169,7 +1169,9 @@ EX string cgi_string() {
#endif
if(arb::in()) V("ARB", its(arb::current.order));
if(arb::in()) V("AP", its(arb::apeirogon_simplified_display));
if(cryst) V("CRYSTAL", its(ginf[gCrystal].sides) + its(ginf[gCrystal].vertex));
if(bt::in() || GDIM == 3) V("WQ", its(vid.texture_step));