From 0a3b10022fb1fc2157076ad0cc3b55544bd1dcd3 Mon Sep 17 00:00:00 2001 From: Orange Date: Thu, 2 Jul 2026 04:29:19 +0300 Subject: [PATCH] improvement --- include/omath/algorithm/radar.hpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/include/omath/algorithm/radar.hpp b/include/omath/algorithm/radar.hpp index bfbf722..7c4e049 100644 --- a/include/omath/algorithm/radar.hpp +++ b/include/omath/algorithm/radar.hpp @@ -12,14 +12,19 @@ namespace omath::algorithm [[nodiscard]] Vector2 world_to_radar(const Camera& camera, const Vector3& position, const FloatingType scale) { - auto look_at_angles = camera.calc_look_at_angles(position); - auto current_angles = camera.get_view_angles(); - auto yaw = current_angles.yaw - look_at_angles.yaw - decltype(current_angles.yaw)::from_degrees(90); - auto right_yaw = current_angles.yaw - - camera.calc_look_at_angles(camera.get_origin() + camera.get_abs_right()).yaw - - decltype(current_angles.yaw)::from_degrees(90); - const auto sign = right_yaw.cos() < 0 ? -1.f : 1.f; + const auto look_at_angles = camera.calc_look_at_angles(position); + const auto current_angles = camera.get_view_angles(); + + static const auto sign = [&camera, ¤t_angles] + { + auto right_yaw = current_angles.yaw + - camera.calc_look_at_angles(camera.get_origin() + camera.get_abs_right()).yaw + - decltype(current_angles.yaw)::from_degrees(90); + return right_yaw.cos() < 0 ? -1.f : 1.f; + }(); + + const auto yaw = current_angles.yaw - look_at_angles.yaw - decltype(current_angles.yaw)::from_degrees(90); return omath::Vector2(static_cast(yaw.cos()) * sign, static_cast(yaw.sin())) * (camera.get_origin().distance_to(position) * scale);