mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-01-13 19:00:35 +00:00
auto-configure S2xR embedding for Euclidean cylinder
This commit is contained in:
parent
351ef88df7
commit
5c1ab36b16
13
geometry.cpp
13
geometry.cpp
@ -1447,6 +1447,7 @@ EX void switch_always3() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(spatial_embedding == seCliffordTorus) configure_clifford_torus();
|
if(spatial_embedding == seCliffordTorus) configure_clifford_torus();
|
||||||
|
if(spatial_embedding == seProductS) configure_product_cylinder();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
vid.always3 = false;
|
vid.always3 = false;
|
||||||
@ -1489,6 +1490,18 @@ EX void switch_always3() {
|
|||||||
vid.eye = vid.wall_height / 2 - vid.depth;
|
vid.eye = vid.wall_height / 2 - vid.depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EX void configure_product_cylinder() {
|
||||||
|
rug::clifford_torus ct;
|
||||||
|
hyperpoint vec;
|
||||||
|
if(sqhypot_d(2, ct.yh) < 1e-6) vec = ct.yh;
|
||||||
|
else if(sqhypot_d(2, ct.xh) < 1e-6) vec = ct.xh;
|
||||||
|
else vec = hyperpoint(10, 0, 0, 0);
|
||||||
|
|
||||||
|
euclid_embed_scale = TAU / hypot_d(2, vec);
|
||||||
|
euclid_embed_scale_y = 1;
|
||||||
|
euclid_embed_rotate = atan2(vec[1], vec[0]) / degree;
|
||||||
|
}
|
||||||
|
|
||||||
EX }
|
EX }
|
||||||
|
|
||||||
EX geometry_information *cgip;
|
EX geometry_information *cgip;
|
||||||
|
Loading…
Reference in New Issue
Block a user