fix path split
This commit is contained in:
@@ -15,6 +15,7 @@ define(
|
||||
var Clipper = require('./join/Clipper');
|
||||
var Relation = require('./join/relation');
|
||||
var pathUtil = require('./pathUtil');
|
||||
var reducePath = require('./reducePath');
|
||||
var interpolate = pathUtil.interpolate;
|
||||
var deInterpolate = pathUtil.deInterpolate;
|
||||
|
||||
@@ -82,6 +83,8 @@ define(
|
||||
paths = segment2Bezier(paths, bezierHash);
|
||||
|
||||
return paths.map(function (path) {
|
||||
// 有些情况下分割节点处会出现线段重叠的情况,这里需要去除重叠线段
|
||||
path = reducePath(path);
|
||||
return deInterpolate(path);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ define(
|
||||
var l = paths.length;
|
||||
var leftSide = [];
|
||||
var rightSide = [];
|
||||
|
||||
var leftPaths = [];
|
||||
for (; i < l; i++) {
|
||||
var path = interpolate(paths[i]);
|
||||
var result = getSegmentPathJoint(path, p0, p1);
|
||||
@@ -59,11 +59,14 @@ define(
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
leftPaths.push(paths[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO 组合左右两侧的曲线段
|
||||
var result = pathJoin(leftSide, relation.join).concat(pathJoin(rightSide, relation.join));
|
||||
|
||||
result = leftPaths.concat(result);
|
||||
return result.map(function (path) {
|
||||
return deInterpolate(path);
|
||||
});
|
||||
|
||||
@@ -136,12 +136,30 @@ define(
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对path进行双向链表连接
|
||||
* @param {Array} path 轮廓数组
|
||||
* @return {Array} path
|
||||
*/
|
||||
function makeLink(path) {
|
||||
for (var i = 0, l = path.length; i < l; i++) {
|
||||
var cur = path[i];
|
||||
var prev = i === 0 ? path[l - 1] : path[i - 1];
|
||||
var next = i === l - 1 ? path[0] : path[i + 1];
|
||||
cur.next = next;
|
||||
cur.prev = prev;
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
return {
|
||||
interpolate: interpolate,
|
||||
deInterpolate: deInterpolate,
|
||||
isClockWise: isClockWise,
|
||||
removeOverlapPoints: removeOverlapPoints,
|
||||
getPathHash: getPathHash
|
||||
getPathHash: getPathHash,
|
||||
makeLink: makeLink
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user