From 3d42c495aaf16dd920685b9aa94aac6e47109226 Mon Sep 17 00:00:00 2001 From: Matthias Grob <maetugr@gmail.com> Date: Mon, 17 Dec 2018 15:37:13 +0100 Subject: [PATCH] FlightTaskOrbit: clip radius to range --- .../FlightTasks/tasks/Orbit/FlightTaskOrbit.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/lib/FlightTasks/tasks/Orbit/FlightTaskOrbit.cpp b/src/lib/FlightTasks/tasks/Orbit/FlightTaskOrbit.cpp index 0862bfcbd3..428ab84b2f 100644 --- a/src/lib/FlightTasks/tasks/Orbit/FlightTaskOrbit.cpp +++ b/src/lib/FlightTasks/tasks/Orbit/FlightTaskOrbit.cpp @@ -117,19 +117,18 @@ bool FlightTaskOrbit::sendTelemetry() return true; } -bool FlightTaskOrbit::setRadius(const float r) +bool FlightTaskOrbit::setRadius(float r) { - if (math::isInRange(r, _radius_min, _radius_max)) { - // small radius is more important than high velocity for safety - if (!checkAcceleration(r, _v, _acceleration_max)) { - _v = math::sign(_v) * sqrtf(_acceleration_max * r); - } + // clip the radius to be within range + r = math::constrain(r, _radius_min, _radius_max); - _r = r; - return true; + // small radius is more important than high velocity for safety + if (!checkAcceleration(r, _v, _acceleration_max)) { + _v = math::sign(_v) * sqrtf(_acceleration_max * r); } - return false; + _r = r; + return true; } bool FlightTaskOrbit::setVelocity(const float v) -- GitLab