This commit is contained in:
2026-07-01 13:53:51 +03:00
parent d9a6f6ec91
commit 58d3e1904c
2 changed files with 111 additions and 16 deletions
+10 -5
View File
@@ -13,11 +13,16 @@ namespace omath::algorithm
Vector3<float> world_to_radar(const Camera& camera, const Vector3<FloatingType>& position, const FloatingType scale)
{
const auto origin = static_cast<Vector3<FloatingType>>(camera.get_origin());
const auto forward = static_cast<Vector3<FloatingType>>(camera.get_abs_forward());
const auto right = static_cast<Vector3<FloatingType>>(camera.get_abs_right());
const auto direction = position - origin;
auto current_angles = camera.get_view_angles();
auto look_at_angles = camera.calc_look_at_angles(position);
auto yaw = look_at_angles.yaw - current_angles.yaw;
return {static_cast<float>(direction.dot(right) * scale), static_cast<float>(-direction.dot(forward) * scale),
0.f};
const auto right = origin + static_cast<Vector3<FloatingType>>(camera.get_abs_right());
auto right_yaw = camera.calc_look_at_angles(right).yaw - current_angles.yaw;
const auto right_sign = right_yaw.sin() < FloatingType{0} ? FloatingType{-1} : FloatingType{1};
const auto radar_distance = position.distance_to(origin) * scale;
return {static_cast<float>(yaw.sin() * right_sign * radar_distance),
static_cast<float>(-yaw.cos() * radar_distance), 0.f};
}
} // namespace omath::algorithm