Calculate intersection area of two paths

心已入冬 提交于 2019-12-10 16:39:20

问题


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.


回答1:


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));


来源:https://stackoverflow.com/questions/12830656/calculate-intersection-area-of-two-paths

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!