Will Wu
Will Wu

Reputation: 631

Calculate intersection area of two paths

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.

Example Chart.

Upvotes: 4

Views: 2529

Answers (1)

andersand
andersand

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

Related Questions