Reputation: 631
There is only a Raphael.pathIntersection(path1, path2)
utility in Raphaël library, and this method can only get intersection points of these 2 paths.
What I need is the intersection area.
As the image below, the method only get 2 points (marked with red circles). I expect to have 2 other points (marked with blue circles.) at the same time to form an intersection area path.
Upvotes: 4
Views: 2529
Reputation: 427
The two points should be all you need. However I'm not sure why you want to intersect. Either you need to know the area (width*height) or you need to visualize the intersection. Either way it's enough to know the two points of the rectangle. I've prepared a little example in case it would be useful to you.
var p1 = "M100 100 L100 400 L400 400 L400 100 Z",
p2 = "M200 200 L200 500 L500 500 L500 200 Z";
var paper = new Raphael(0, 0, 800, 600);
paper.path(p1).attr({fill : "red", opacity : 1});
paper.path(p2).attr({fill : "blue", opacity : 0.5});
var points = Raphael.pathIntersection(p1, p2);
var w = points[1].x-points[0].x,
h = points[0].y-points[1].y;
var group = paper.set();
group.push(paper.rect(510, 100, w, h).attr({fill: "yellow"}));
group.push(paper.text(610, 150, "The intersection area\nis drawn over here.\n \nWidth: " + w + "\nHeight: " + h));
Upvotes: 4