mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2024-11-09 15:39:55 +00:00
twist:: correct plevel values for all nil
This commit is contained in:
parent
07fe59f3e1
commit
dfd213fc73
@ -89,6 +89,8 @@ struct archimedean_tiling {
|
|||||||
|
|
||||||
bool get_step_values(int& steps, int& single_step);
|
bool get_step_values(int& steps, int& single_step);
|
||||||
|
|
||||||
|
ld dual_tile_area();
|
||||||
|
|
||||||
transmatrix adjcell_matrix(heptagon *h, int d);
|
transmatrix adjcell_matrix(heptagon *h, int d);
|
||||||
|
|
||||||
ld scale();
|
ld scale();
|
||||||
@ -1588,6 +1590,14 @@ EX int get_graphical_id(cell *c) {
|
|||||||
return tid;
|
return tid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ld archimedean_tiling::dual_tile_area() {
|
||||||
|
// we need this only in Euclidean for now
|
||||||
|
if(get_geometry().kind != gcEuclid) throw hr_exception("dual_tile_area only implemented in Euclidean");
|
||||||
|
ld total = 0;
|
||||||
|
for(auto r: inradius) total += r;
|
||||||
|
return total * edgelength / 2;
|
||||||
|
}
|
||||||
|
|
||||||
bool archimedean_tiling::get_step_values(int& steps, int& single_step) {
|
bool archimedean_tiling::get_step_values(int& steps, int& single_step) {
|
||||||
|
|
||||||
int nom = -2;
|
int nom = -2;
|
||||||
|
17
geometry.cpp
17
geometry.cpp
@ -733,7 +733,7 @@ void geometry_information::prepare_basics() {
|
|||||||
#if CAP_BT
|
#if CAP_BT
|
||||||
else if(bt::in()) bt::create_faces();
|
else if(bt::in()) bt::create_faces();
|
||||||
#endif
|
#endif
|
||||||
else if(nil) nilv::create_faces();
|
else if(nil && !mtwisted) nilv::create_faces();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
scalefactor = crossf / hcrossf7;
|
scalefactor = crossf / hcrossf7;
|
||||||
@ -809,7 +809,7 @@ void geometry_information::prepare_basics() {
|
|||||||
|
|
||||||
plevel = vid.plevel_factor * scalefactor;
|
plevel = vid.plevel_factor * scalefactor;
|
||||||
single_step = 1;
|
single_step = 1;
|
||||||
if(mhybrid && !mproduct) {
|
if(mtwisted && ginf[hybrid::underlying].cclass != gcEuclid) {
|
||||||
#if CAP_ARCM
|
#if CAP_ARCM
|
||||||
if(hybrid::underlying == gArchimedean)
|
if(hybrid::underlying == gArchimedean)
|
||||||
arcm::current.get_step_values(psl_steps, single_step);
|
arcm::current.get_step_values(psl_steps, single_step);
|
||||||
@ -825,11 +825,14 @@ void geometry_information::prepare_basics() {
|
|||||||
}
|
}
|
||||||
DEBB(DF_GEOM | DF_POLY, ("steps = ", psl_steps, " / ", single_step));
|
DEBB(DF_GEOM | DF_POLY, ("steps = ", psl_steps, " / ", single_step));
|
||||||
plevel = M_PI * single_step / psl_steps;
|
plevel = M_PI * single_step / psl_steps;
|
||||||
|
}
|
||||||
if(hybrid::underlying == gEuclid && PURE) {
|
if(mtwisted && ginf[hybrid::underlying].cclass == gcEuclid) {
|
||||||
cgi.plevel = sqrt(3)/4.;
|
single_step = 1;
|
||||||
single_step = 1;
|
if(hybrid::underlying == gArchimedean) plevel = arcm::current.dual_tile_area();
|
||||||
}
|
if(hybrid::underlying == gEuclid && PURE) plevel = sqrt(3)/4.;
|
||||||
|
if(hybrid::underlying == gEuclidSquare && PURE) plevel = 1;
|
||||||
|
if(hybrid::underlying == gEuclidSquare && BITRUNCATED) plevel = 0.25;
|
||||||
|
if(hybrid::underlying == gEuclid && BITRUNCATED) plevel = sqrt(3)/12.;
|
||||||
}
|
}
|
||||||
|
|
||||||
set_sibling_limit();
|
set_sibling_limit();
|
||||||
|
Loading…
Reference in New Issue
Block a user