pathItem group interesections
multi path intersections
by Nick Hulea
HTML
<script src="http://cdn.eyahuska.com/paper.js"></script>
<canvas resize="true" id="canvas-1"></canvas>
<script type="text/paperscript" canvas="canvas-1">
var iArray = [];
var n;
var path = new Path.Rectangle(new Point(30, 25), new Size(200, 200));
path.strokeColor = 'black';
var secondPath = path.clone();
var intersectionGroup = new Group();
var marker = new Path.Circle({
center: view.center,
radius: 10,
fillColor: 'green'
});
function onFrame(event) {
secondPath.rotate(1);
marker.position = secondPath.firstSegment.point;
var intersections = secondPath.getIntersections(path);
intersections.sort(function(loc1, loc2) {
var path1 = loc1.getPath(),
path2 = loc2.getPath();
return path1 === path2
// We can add parameter (0 <= t <= 1) to index (a integer)
// to compare both at the same time
? (loc1.getIndex() + loc1.getParameter())
- (loc2.getIndex() + loc2.getParameter())
// Sort by path id to group all locations on the same path.
: path1._id - path2._id;
});
intersectionGroup.removeChildren();
for (var i = 0; i < intersections.length; i++) {
var intersectionPath = new Path.Circle({
center: intersections[i].point,
radius: 10,
fillColor: 'red'
});
iArray.push(intersections[i].point);
intersectionGroup.addChild(intersectionPath);
}
var n = new Path(iArray);
n.fillColor = 'black';
n.closed = true;
n.selected = true;
intersectionGroup.addChild(n);
iArray = [];
}
</script>