2012-10-11 108 views
4

Raphaël庫中只有一個Raphael.pathIntersection(path1, path2)實用程序,並且此方法只能得到這兩條路徑的交點的計算兩條路徑的交叉點

我需要的是交叉區域

如下圖所示,該方法只獲得2個點(用紅色圓圈標記)。我期望同時有另外兩個點(用藍色圓圈標記),以形成一個相交區域路徑。

Example Chart.

回答

3

兩點應該是你所需要的。但是我不確定你爲什麼要相交。要麼需要知道區域(寬度*高度),要麼需要可視化交點。無論哪種方式,知道矩形的兩個點就足夠了。我準備了a little example以防萬一它對你有用。

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

非常感謝@andersand,當處理2個矩形時,你的回答非常完美。實際上我期望有一個更一般的解決方案,用於2個路徑,即矩形和三角形。 –

+1

我已經回答了你的問題;不要在評論中更改範圍?至少在我的回答中,如果它對你有用,那麼我花費在它上面。 – andersand

+0

這是一個很好的答案,如果您嘗試爲路徑執行此操作,您可能會發現一個錯誤,它無法正確報告交集 - http://stackoverflow.com/questions/12071186/raphael-path-intersection-未工作 –