Update IkConstraint.cpp (#2644)

negative sqrt protection
This commit is contained in:
archilanfedorov 2024-10-02 17:12:38 +07:00 committed by GitHub
parent b63da877d4
commit b03c682443
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -208,8 +208,9 @@ void IkConstraint::apply(Bone &parent, Bone &child, float targetX, float targetY
r0 = q / c2; r0 = q / c2;
r1 = c0 / q; r1 = c0 / q;
r = MathUtil::abs(r0) < MathUtil::abs(r1) ? r0 : r1; r = MathUtil::abs(r0) < MathUtil::abs(r1) ? r0 : r1;
if (r * r <= dd) { float ddrr = dd - r * r;
y = MathUtil::sqrt(dd - r * r) * bendDir; if (ddrr >= 0) {
y = MathUtil::sqrt(ddrr) * bendDir;
a1 = ta - MathUtil::atan2(y, r); a1 = ta - MathUtil::atan2(y, r);
a2 = MathUtil::atan2(y / psy, (r - l1) / psx); a2 = MathUtil::atan2(y / psy, (r - l1) / psx);
goto break_outer; goto break_outer;