mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-01 02:38:43 -05:00
Optimize PathItem#bounds by using less coordinate lookups.
This commit is contained in:
parent
71d1ff3cb3
commit
515439c4df
1 changed files with 16 additions and 14 deletions
|
@ -85,29 +85,31 @@ PathItem = Item.extend(new function() {
|
||||||
var p1 = p0.add(prev.handleOut);
|
var p1 = p0.add(prev.handleOut);
|
||||||
var p3 = segment.point;
|
var p3 = segment.point;
|
||||||
var p2 = p3.add(segment.handleIn);
|
var p2 = p3.add(segment.handleIn);
|
||||||
for (var j = 0; j < 2; j++) {
|
for (var i = 0; i < 2; i++) {
|
||||||
var p = coords[j];
|
var coord = coords[i];
|
||||||
|
var v0 = p0[coord], v1 = p1[coord],
|
||||||
|
v2 = p2[coord], v3 = p3[coord];
|
||||||
|
|
||||||
function bounds(value) {
|
function bounds(value) {
|
||||||
if (value < min[p]) {
|
if (value < min[coord]) {
|
||||||
min[p] = value;
|
min[coord] = value;
|
||||||
} else if (value > max[p]) {
|
} else if (value > max[coord]) {
|
||||||
max[p] = value;
|
max[coord] = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bounds(p3[p]);
|
bounds(v3);
|
||||||
|
|
||||||
function f(t) {
|
function f(t) {
|
||||||
var omt = 1 - t;
|
var omt = 1 - t;
|
||||||
return omt * omt * omt * p0[p]
|
return omt * omt * omt * v0
|
||||||
+ 3 * omt * omt * t * p1[p]
|
+ 3 * omt * omt * t * v1
|
||||||
+ 3 * omt * t * t * p2[p]
|
+ 3 * omt * t * t * v2
|
||||||
+ t * t * t * p3[p];
|
+ t * t * t * v3;
|
||||||
}
|
}
|
||||||
|
|
||||||
var b = 6 * p0[p] - 12 * p1[p] + 6 * p2[p];
|
var b = 6 * v0 - 12 * v1 + 6 * v2;
|
||||||
var a = -3 * p0[p] + 9 * p1[p] - 9 * p2[p] + 3 * p3[p];
|
var a = -3 * v0 + 9 * v1 - 9 * v2 + 3 * v3;
|
||||||
var c = 3 * p1[p] - 3 * p0[p];
|
var c = 3 * v1 - 3 * v0;
|
||||||
|
|
||||||
if (a == 0) {
|
if (a == 0) {
|
||||||
if (b == 0)
|
if (b == 0)
|
||||||
|
|
Loading…
Reference in a new issue