refactored get_logical_z

This commit is contained in:
Zeno Rogue 2023-01-07 11:45:40 +01:00
parent 57b762dfe8
commit 3f2a84be5f
2 changed files with 21 additions and 7 deletions

View File

@ -5077,13 +5077,8 @@ EX void make_actual_view() {
actual_view_transform = get_shift_view_of(ztangent(d), actual_view_transform * View) * view_inverse(View);
}
hyperpoint h = tC0(view_inverse(actual_view_transform * View));
if(geom3::euc_in_nil()) camera_level = h[1];
else if(geom3::euc_in_solnih()) camera_level = h[2];
else if(geom3::hyp_in_solnih()) camera_level = h[0];
else if(gproduct) camera_level = log(h[2]);
else camera_level = asin_auto(h[2]);
if(moved_center()) camera_level--;
camera_level = get_logical_z(h);
camera_sign = cgi.FLOOR > cgi.WALL;
}

View File

@ -930,6 +930,25 @@ EX hyperpoint orthogonal_move(const hyperpoint& h, ld z) {
u *= cos_auto(z);
return hpxy3(h[0] * u, h[1] * u, sinh(z));
}
EX ld get_logical_z(hyperpoint h) {
if(geom3::euc_in_nil())
return h[1];
if(geom3::euc_in_solnih())
return h[2];
if(geom3::hyp_in_solnih())
return h[0];
if(geom3::euc_in_sl2())
return esl2_ati(h)[1];
if(geom3::euc_in_product()) {
ld bz = zlevel(h);
auto h1 = h / exp(bz);
return asin_auto(h1[1]);
}
if(gproduct)
return log(h[2]);
return asin_auto(h[2]) - (moved_center() ? 1 : 0);
}
#endif
// push alpha units vertically