mirror of
				https://github.com/zenorogue/hyperrogue.git
				synced 2025-10-31 14:02:59 +00:00 
			
		
		
		
	refactored get_logical_z
This commit is contained in:
		| @@ -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; | ||||
|     } | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Zeno Rogue
					Zeno Rogue