unified look at for source iw_engine

This commit is contained in:
2025-09-20 17:09:13 +03:00
parent 893eca296b
commit f8d6e4b544
2 changed files with 7 additions and 8 deletions

View File

@@ -8,11 +8,10 @@ namespace omath::iw_engine
ViewAngles CameraTrait::calc_look_at_angle(const Vector3<float>& cam_origin, const Vector3<float>& look_at) noexcept ViewAngles CameraTrait::calc_look_at_angle(const Vector3<float>& cam_origin, const Vector3<float>& look_at) noexcept
{ {
const auto distance = cam_origin.distance_to(look_at); const auto direction = (look_at - cam_origin).normalized();
const auto delta = look_at - cam_origin;
return {PitchAngle::from_radians(-std::asin(delta.z / distance)), return {PitchAngle::from_radians(-std::asin(direction.z)),
YawAngle::from_radians(std::atan2(delta.y, delta.x)), RollAngle::from_radians(0.f)}; YawAngle::from_radians(std::atan2(direction.y, direction.x)), RollAngle::from_radians(0.f)};
} }
Mat4X4 CameraTrait::calc_view_matrix(const ViewAngles& angles, const Vector3<float>& cam_origin) noexcept Mat4X4 CameraTrait::calc_view_matrix(const ViewAngles& angles, const Vector3<float>& cam_origin) noexcept
{ {

View File

@@ -8,11 +8,11 @@ namespace omath::source_engine
ViewAngles CameraTrait::calc_look_at_angle(const Vector3<float>& cam_origin, const Vector3<float>& look_at) noexcept ViewAngles CameraTrait::calc_look_at_angle(const Vector3<float>& cam_origin, const Vector3<float>& look_at) noexcept
{ {
const auto distance = cam_origin.distance_to(look_at); const auto direction = (look_at - cam_origin).normalized();
const auto delta = look_at - cam_origin;
return {PitchAngle::from_radians(-std::asin(delta.z / distance)),
YawAngle::from_radians(std::atan2(delta.y, delta.x)), RollAngle::from_radians(0.f)}; return {PitchAngle::from_radians(-std::asin(direction.z)),
YawAngle::from_radians(std::atan2(direction.y, direction.x)), RollAngle::from_radians(0.f)};
} }
Mat4X4 CameraTrait::calc_view_matrix(const ViewAngles& angles, const Vector3<float>& cam_origin) noexcept Mat4X4 CameraTrait::calc_view_matrix(const ViewAngles& angles, const Vector3<float>& cam_origin) noexcept
{ {