From e22b6cb0fdca87b3f2426715899b01234e50dbec Mon Sep 17 00:00:00 2001 From: Orange Date: Tue, 7 May 2024 02:12:16 +0300 Subject: [PATCH] improved code --- source/ProjectilePredictor.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/source/ProjectilePredictor.cpp b/source/ProjectilePredictor.cpp index 14f86fd..3c2f7af 100644 --- a/source/ProjectilePredictor.cpp +++ b/source/ProjectilePredictor.cpp @@ -55,15 +55,17 @@ namespace uml::prediction { const auto delta = target - origin; - const auto distance = delta.Length2D(); + const auto distance2d = delta.Length2D(); - float root = powf(bulletSpeed, 4) - bulletGravity * (bulletGravity * distance * distance + 2.0f * delta.z * powf(bulletSpeed, 2)); - if (root < 0.0f) { + float root = powf(bulletSpeed, 4) - bulletGravity * (bulletGravity * distance2d * distance2d + 2.0f * delta.z * powf(bulletSpeed, 2)); + + if (root < 0.0f) return std::nullopt; - } - root = sqrt(root); - float angle = atanf((powf(bulletSpeed, 2) - root) / (bulletGravity * distance)); + + root = std::sqrt(root); + float angle = std::atan((powf(bulletSpeed, 2) - root) / (bulletGravity * distance2d)); + return -angles::RadToDeg(angle); }