mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-08 11:46:53 +08:00
noRotationOrReflection simplification.
This commit is contained in:
parent
257e72de11
commit
f92e770bb1
@ -153,28 +153,25 @@ public class Bone implements Updatable {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case noRotationOrReflection: {
|
case noRotationOrReflection: {
|
||||||
float psx = (float)Math.sqrt(pa * pa + pc * pc), psy, prx;
|
float s = pa * pa + pc * pc, prx;
|
||||||
if (psx > 0.0001f) {
|
if (s > 0.0001f) {
|
||||||
psy = Math.abs((pa * pd - pb * pc) / psx);
|
s = Math.abs(pa * pd - pb * pc) / s;
|
||||||
|
pb = pc * s;
|
||||||
|
pd = pa * s;
|
||||||
prx = atan2(pc, pa) * radDeg;
|
prx = atan2(pc, pa) * radDeg;
|
||||||
} else {
|
} else {
|
||||||
psx = 0;
|
pa = 0;
|
||||||
psy = (float)Math.sqrt(pb * pb + pd * pd);
|
pc = 0;
|
||||||
prx = 90 - atan2(pd, pb) * radDeg;
|
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 rx = rotation + shearX - prx;
|
||||||
float ry = rotation + shearY - prx + 90;
|
float ry = rotation + shearY - prx + 90;
|
||||||
float la = cosDeg(rx) * scaleX;
|
float la = cosDeg(rx) * scaleX;
|
||||||
float lb = cosDeg(ry) * scaleY;
|
float lb = cosDeg(ry) * scaleY;
|
||||||
float lc = sinDeg(rx) * scaleX;
|
float lc = sinDeg(rx) * scaleX;
|
||||||
float ld = sinDeg(ry) * scaleY;
|
float ld = sinDeg(ry) * scaleY;
|
||||||
a = pa * la + pb * lc;
|
a = pa * la - pb * lc;
|
||||||
b = pa * lb + pb * ld;
|
b = pa * lb - pb * ld;
|
||||||
c = pc * la + pd * lc;
|
c = pc * la + pd * lc;
|
||||||
d = pc * lb + pd * ld;
|
d = pc * lb + pd * ld;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user