|
@@ -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;
|