HyperRogue  11.3d
game/visualization engine based on non-Euclidean geometry
Classes | Namespaces | Macros | Functions | Variables
fieldpattern.cpp File Reference

Field Quotient geometry. More...

#include "hyper.h"

Classes

struct  hr::fieldpattern::primeinfo
 
struct  hr::fieldpattern::fgeomextra
 
struct  hr::fieldpattern::matrix
 
struct  hr::fieldpattern::fpattern
 
struct  hr::fieldpattern::discovery
 

Namespaces

 hr
 

Macros

#define currfp   fieldpattern::getcurrfp()
 
#define MWDIM   (prod ? 3 : WDIM+1)
 
#define EASY
 
#define MXF   1000000
 
#define SETDIST(X, d, it)   {int c = matcode[X]; indist[d].push_back(c); if(it == itNone) ; else if(markers[c] && markers[c] != it) markers[c] = itBuggy; else markers[c] = it; }
 
#define MAXORD   10000
 
#define STR(x)   string(x, sizeof(x))
 
#define currfp   fieldpattern::getcurrfp()
 

Functions

EX bool hr::fieldpattern::isprime (int n)
 
EX int hr::fieldpattern::groupspin (int id, int d, int group)
 
EX int hr::fieldpattern::btspin (int id, int d)
 
EX void hr::fieldpattern::info ()
 
EX struct fpattern & hr::fieldpattern::getcurrfp ()
 
EX void hr::fieldpattern::nextPrime (fgeomextra &ex)
 
EX void hr::fieldpattern::nextPrimes (fgeomextra &ex)
 
EX void hr::fieldpattern::enableFieldChange ()
 
EX void hr::fieldpattern::field_from_current ()
 
EX int hr::fieldpattern::field_celldistance (cell *c1, cell *c2)
 
EX int hr::currfp_gmul (int a, int b)
 
EX int hr::currfp_inverses (int i)
 
EX int hr::currfp_distwall (int i)
 
EX int hr::currfp_n ()
 
EX int hr::currfp_get_R ()
 
EX int hr::currfp_get_P ()
 
EX int hr::currfp_get_X ()
 
EX void hr::hread_fpattern (hstream &hs, fieldpattern::fpattern &fp)
 
EX void hr::hwrite_fpattern (hstream &hs, fieldpattern::fpattern &fp)
 

Variables

int hr::fieldpattern::limitsq = 10
 
int hr::fieldpattern::limitp = 10000
 
int hr::fieldpattern::limitv = 100000
 
map< unsigned, int > hr::fieldpattern::hash_found
 
fpattern hr::fieldpattern::fp43 (43)
 
EX fpattern hr::fieldpattern::current_quotient_field = fpattern(0)
 
EX fpattern hr::fieldpattern::fp_invalid = fpattern(0)
 
EX bool hr::fieldpattern::quotient_field_changed
 
EX int hr::fieldpattern::subpathid = currfp.matcode[currfp.strtomatrix("RRRPRRRRRPRRRP")]
 
EX int hr::fieldpattern::subpathorder = currfp.order(currfp.matrices[subpathid])
 
EX vector< fgeomextra > hr::fieldpattern::fgeomextras
 
EX int hr::fieldpattern::current_extra = 0
 
EX map< string, discovery > hr::fieldpattern::discoveries
 
int hr::fieldpattern::hk
 
EX purehookset hr::fieldpattern::on_geometry_change
 

Detailed Description

Field Quotient geometry.

Variable Documentation

◆ fgeomextras

EX vector<fgeomextra> hr::fieldpattern::fgeomextras
Initial value:
= {
fgeomextra(gNormal, 4),
fgeomextra(gOctagon, 1),
fgeomextra(g45, 1),
fgeomextra(g46, 5),
fgeomextra(g47, 1),
fgeomextra(gSchmutzM3, 0),
}

◆ hk

int hr::fieldpattern::hk
Initial value:
=
+ addHook(on_geometry_change, 100, [] { for(auto& d:discoveries) if(!d.second.is_suspended) d.second.suspend(); })
+ addHook(final_cleanup, 100, [] {
for(auto& d:discoveries) { d.second.schedule_destruction(); if(d.second.is_suspended) d.second.activate(); }
discoveries.clear();
})
+ addHook(hooks_args, 0, [] {
using namespace arg;
if(0) ;
else if(argis("-q3-limitsq")) { shift(); limitsq = argi(); }
else if(argis("-q3-limitp")) { shift(); limitp = argi(); }
else if(argis("-q3-limitv")) { shift(); limitv = argi(); }
else return 1;
return 0;
})