[ts] Ported IKConstraint simplification, see #907

This commit is contained in:
badlogic 2017-05-24 11:39:13 +02:00
parent 9c38d3faf0
commit 3f478fd831
13 changed files with 21 additions and 119 deletions

View File

@ -2407,22 +2407,8 @@ var spine;
break outer; break outer;
} }
} }
var minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0; var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;
var maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;
x = l1 + a;
d = x * x;
if (d > maxDist) {
maxAngle = 0;
maxDist = d;
maxX = x;
}
x = l1 - a;
d = x * x;
if (d < minDist) {
minAngle = spine.MathUtils.PI;
minDist = d;
minX = x;
}
var angle = Math.acos(-a * l1 / (aa - bb)); var angle = Math.acos(-a * l1 / (aa - bb));
x = a * Math.cos(angle) + l1; x = a * Math.cos(angle) + l1;
y = b * Math.sin(angle); y = b * Math.sin(angle);

File diff suppressed because one or more lines are too long

View File

@ -2407,22 +2407,8 @@ var spine;
break outer; break outer;
} }
} }
var minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0; var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;
var maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;
x = l1 + a;
d = x * x;
if (d > maxDist) {
maxAngle = 0;
maxDist = d;
maxX = x;
}
x = l1 - a;
d = x * x;
if (d < minDist) {
minAngle = spine.MathUtils.PI;
minDist = d;
minX = x;
}
var angle = Math.acos(-a * l1 / (aa - bb)); var angle = Math.acos(-a * l1 / (aa - bb));
x = a * Math.cos(angle) + l1; x = a * Math.cos(angle) + l1;
y = b * Math.sin(angle); y = b * Math.sin(angle);

File diff suppressed because one or more lines are too long

View File

@ -2407,22 +2407,8 @@ var spine;
break outer; break outer;
} }
} }
var minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0; var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;
var maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;
x = l1 + a;
d = x * x;
if (d > maxDist) {
maxAngle = 0;
maxDist = d;
maxX = x;
}
x = l1 - a;
d = x * x;
if (d < minDist) {
minAngle = spine.MathUtils.PI;
minDist = d;
minX = x;
}
var angle = Math.acos(-a * l1 / (aa - bb)); var angle = Math.acos(-a * l1 / (aa - bb));
x = a * Math.cos(angle) + l1; x = a * Math.cos(angle) + l1;
y = b * Math.sin(angle); y = b * Math.sin(angle);

File diff suppressed because one or more lines are too long

View File

@ -2407,22 +2407,8 @@ var spine;
break outer; break outer;
} }
} }
var minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0; var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;
var maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;
x = l1 + a;
d = x * x;
if (d > maxDist) {
maxAngle = 0;
maxDist = d;
maxX = x;
}
x = l1 - a;
d = x * x;
if (d < minDist) {
minAngle = spine.MathUtils.PI;
minDist = d;
minX = x;
}
var angle = Math.acos(-a * l1 / (aa - bb)); var angle = Math.acos(-a * l1 / (aa - bb));
x = a * Math.cos(angle) + l1; x = a * Math.cos(angle) + l1;
y = b * Math.sin(angle); y = b * Math.sin(angle);

File diff suppressed because one or more lines are too long

View File

@ -2407,22 +2407,8 @@ var spine;
break outer; break outer;
} }
} }
var minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0; var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;
var maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;
x = l1 + a;
d = x * x;
if (d > maxDist) {
maxAngle = 0;
maxDist = d;
maxX = x;
}
x = l1 - a;
d = x * x;
if (d < minDist) {
minAngle = spine.MathUtils.PI;
minDist = d;
minX = x;
}
var angle = Math.acos(-a * l1 / (aa - bb)); var angle = Math.acos(-a * l1 / (aa - bb));
x = a * Math.cos(angle) + l1; x = a * Math.cos(angle) + l1;
y = b * Math.sin(angle); y = b * Math.sin(angle);

File diff suppressed because one or more lines are too long

View File

@ -2407,22 +2407,8 @@ var spine;
break outer; break outer;
} }
} }
var minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0; var minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;
var maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; var maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;
x = l1 + a;
d = x * x;
if (d > maxDist) {
maxAngle = 0;
maxDist = d;
maxX = x;
}
x = l1 - a;
d = x * x;
if (d < minDist) {
minAngle = spine.MathUtils.PI;
minDist = d;
minX = x;
}
var angle = Math.acos(-a * l1 / (aa - bb)); var angle = Math.acos(-a * l1 / (aa - bb));
x = a * Math.cos(angle) + l1; x = a * Math.cos(angle) + l1;
y = b * Math.sin(angle); y = b * Math.sin(angle);

File diff suppressed because one or more lines are too long

View File

@ -34,7 +34,7 @@ module spine {
bones: Array<Bone>; bones: Array<Bone>;
target: Bone; target: Bone;
mix = 1; mix = 1;
bendDirection = 0; bendDirection = 0;
constructor (data: IkConstraintData, skeleton: Skeleton) { constructor (data: IkConstraintData, skeleton: Skeleton) {
if (data == null) throw new Error("data cannot be null."); if (data == null) throw new Error("data cannot be null.");
@ -169,22 +169,8 @@ module spine {
break outer; break outer;
} }
} }
let minAngle = 0, minDist = Number.MAX_VALUE, minX = 0, minY = 0; let minAngle = spine.MathUtils.PI, minX = l1 - a, minDist = minX * minX, minY = 0;
let maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; let maxAngle = 0, maxX = l1 + a, maxDist = maxX * maxX, maxY = 0;
x = l1 + a;
d = x * x;
if (d > maxDist) {
maxAngle = 0;
maxDist = d;
maxX = x;
}
x = l1 - a;
d = x * x;
if (d < minDist) {
minAngle = MathUtils.PI;
minDist = d;
minX = x;
}
let angle = Math.acos(-a * l1 / (aa - bb)); let angle = Math.acos(-a * l1 / (aa - bb));
x = a * Math.cos(angle) + l1; x = a * Math.cos(angle) + l1;
y = b * Math.sin(angle); y = b * Math.sin(angle);