From b03c6824430abffb2a360f396f3afb772c432006 Mon Sep 17 00:00:00 2001 From: archilanfedorov <59674274+archilanfedorov@users.noreply.github.com> Date: Wed, 2 Oct 2024 17:12:38 +0700 Subject: [PATCH] Update IkConstraint.cpp (#2644) negative sqrt protection --- spine-cpp/spine-cpp/src/spine/IkConstraint.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spine-cpp/spine-cpp/src/spine/IkConstraint.cpp b/spine-cpp/spine-cpp/src/spine/IkConstraint.cpp index bf667d6b7..279c76dc5 100644 --- a/spine-cpp/spine-cpp/src/spine/IkConstraint.cpp +++ b/spine-cpp/spine-cpp/src/spine/IkConstraint.cpp @@ -208,8 +208,9 @@ void IkConstraint::apply(Bone &parent, Bone &child, float targetX, float targetY r0 = q / c2; r1 = c0 / q; r = MathUtil::abs(r0) < MathUtil::abs(r1) ? r0 : r1; - if (r * r <= dd) { - y = MathUtil::sqrt(dd - r * r) * bendDir; + float ddrr = dd - r * r; + if (ddrr >= 0) { + y = MathUtil::sqrt(ddrr) * bendDir; a1 = ta - MathUtil::atan2(y, r); a2 = MathUtil::atan2(y / psy, (r - l1) / psx); goto break_outer;