mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[ts] Ported IKConstraint fix.
This commit is contained in:
parent
d91d1691fc
commit
087bcfc43b
@ -2415,22 +2415,25 @@ var spine;
|
|||||||
}
|
}
|
||||||
var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;
|
var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;
|
||||||
var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;
|
var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;
|
||||||
var angle = Math.acos(-a * l1 / (aa - bb));
|
c = -a * l1 / (aa - bb);
|
||||||
x = a * Math.cos(angle) + l1;
|
if (c >= -1 && c <= 1) {
|
||||||
y = b * Math.sin(angle);
|
c = Math.acos(c);
|
||||||
|
x = a * Math.cos(c) + l1;
|
||||||
|
y = b * Math.sin(c);
|
||||||
d = x * x + y * y;
|
d = x * x + y * y;
|
||||||
if (d < minDist) {
|
if (d < minDist) {
|
||||||
minAngle = angle;
|
minAngle = c;
|
||||||
minDist = d;
|
minDist = d;
|
||||||
minX = x;
|
minX = x;
|
||||||
minY = y;
|
minY = y;
|
||||||
}
|
}
|
||||||
if (d > maxDist) {
|
if (d > maxDist) {
|
||||||
maxAngle = angle;
|
maxAngle = c;
|
||||||
maxDist = d;
|
maxDist = d;
|
||||||
maxX = x;
|
maxX = x;
|
||||||
maxY = y;
|
maxY = y;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (dd <= (minDist + maxDist) / 2) {
|
if (dd <= (minDist + maxDist) / 2) {
|
||||||
a1 = ta - Math.atan2(minY * bendDir, minX);
|
a1 = ta - Math.atan2(minY * bendDir, minX);
|
||||||
a2 = minAngle * bendDir;
|
a2 = minAngle * bendDir;
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -171,22 +171,25 @@ module spine {
|
|||||||
}
|
}
|
||||||
let minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;
|
let minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;
|
||||||
let maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;
|
let maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;
|
||||||
let angle = Math.acos(-a * l1 / (aa - bb));
|
c = -a * l1 / (aa - bb);
|
||||||
x = a * Math.cos(angle) + l1;
|
if (c >= -1 && c <= 1) {
|
||||||
y = b * Math.sin(angle);
|
c = Math.acos(c);
|
||||||
|
x = a * Math.cos(c) + l1;
|
||||||
|
y = b * Math.sin(c);
|
||||||
d = x * x + y * y;
|
d = x * x + y * y;
|
||||||
if (d < minDist) {
|
if (d < minDist) {
|
||||||
minAngle = angle;
|
minAngle = c;
|
||||||
minDist = d;
|
minDist = d;
|
||||||
minX = x;
|
minX = x;
|
||||||
minY = y;
|
minY = y;
|
||||||
}
|
}
|
||||||
if (d > maxDist) {
|
if (d > maxDist) {
|
||||||
maxAngle = angle;
|
maxAngle = c;
|
||||||
maxDist = d;
|
maxDist = d;
|
||||||
maxX = x;
|
maxX = x;
|
||||||
maxY = y;
|
maxY = y;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (dd <= (minDist + maxDist) / 2) {
|
if (dd <= (minDist + maxDist) / 2) {
|
||||||
a1 = ta - Math.atan2(minY * bendDir, minX);
|
a1 = ta - Math.atan2(minY * bendDir, minX);
|
||||||
a2 = minAngle * bendDir;
|
a2 = minAngle * bendDir;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user