From f92e770bb1ce847b1d4aae29ff8e4baa9250c8c0 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Tue, 18 Oct 2016 21:26:08 +0200 Subject: [PATCH] noRotationOrReflection simplification. --- .../src/com/esotericsoftware/spine/Bone.java | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java index 3b3d451a1..98e398107 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Bone.java @@ -153,28 +153,25 @@ public class Bone implements Updatable { break; } case noRotationOrReflection: { - float psx = (float)Math.sqrt(pa * pa + pc * pc), psy, prx; - if (psx > 0.0001f) { - psy = Math.abs((pa * pd - pb * pc) / psx); + float s = pa * pa + pc * pc, prx; + if (s > 0.0001f) { + s = Math.abs(pa * pd - pb * pc) / s; + pb = pc * s; + pd = pa * s; prx = atan2(pc, pa) * radDeg; } else { - psx = 0; - psy = (float)Math.sqrt(pb * pb + pd * pd); + pa = 0; + pc = 0; prx = 90 - atan2(pd, pb) * radDeg; } - float cos = cosDeg(prx), sin = sinDeg(prx); - pa = cos * psx; - pb = -sin * psy; - pc = sin * psx; - pd = cos * psy; float rx = rotation + shearX - prx; float ry = rotation + shearY - prx + 90; float la = cosDeg(rx) * scaleX; float lb = cosDeg(ry) * scaleY; float lc = sinDeg(rx) * scaleX; float ld = sinDeg(ry) * scaleY; - a = pa * la + pb * lc; - b = pa * lb + pb * ld; + a = pa * la - pb * lc; + b = pa * lb - pb * ld; c = pc * la + pd * lc; d = pc * lb + pd * ld; break;