Slide 57
Slide 57 text
function interPathHelper(path1, path2, justCount) {!
path1 = R._path2curve(path1);!
path2 = R._path2curve(path2);!
var x1, y1, x2, y2, x1m, y1m, x2m, y2m, bez1, bez2,!
res = justCount ? 0 : [];!
for (var i = 0, ii = path1.length; i < ii; i++) {!
var pi = path1[i];!
if (pi[0] == "M") {!
x1 = x1m = pi[1];!
y1 = y1m = pi[2];!
} else {!
if (pi[0] == "C") {!
bez1 = [x1, y1].concat(pi.slice(1));!
x1 = bez1[6];!
y1 = bez1[7];!
} else {!
bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];!
x1 = x1m;!
y1 = y1m;!
}!
for (var j = 0, jj = path2.length; j < jj; j++) {!
var pj = path2[j];!
if (pj[0] == "M") {!
x2 = x2m = pj[1];!
y2 = y2m = pj[2];!
} else {!
if (pj[0] == "C") {!
bez2 = [x2, y2].concat(pj.slice(1));!
x2 = bez2[6];!
y2 = bez2[7];!
} else {!
bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];!
x2 = x2m;!
y2 = y2m;!
}!
var intr = interHelper(bez1, bez2, justCount);!
if (justCount) {!
res += intr;!
} else {!
for (var k = 0, kk = intr.length; k < kk; k++) {!
intr[k].segment1 = i;!
intr[k].segment2 = j;