2015-02-09 29 views
0

我正在使用Snap SVG在我正在製作的Web應用程序內操縱SVG。在這個Web應用程序中,我有兩個矩形,一個在另一個的內部,將它們稱爲rectInner和rectOuter。其目的是允許用戶將rectOuter(比例,旋轉,平移)轉換爲rectOuter內部的rectInner始終爲嚴格。要清楚,rectInner將永遠不會移動或被轉換。Snap SVG - 檢查一個轉換後的矩形是否完全位於另一個矩形內部?

我對這個問題的方法是獲取rectInner和rectOuter的邊界框,並檢查第一個是否嚴格包含在第二個中。 Snap SVG提供了一個函數isBBoxIntersect(rectInner,rectOuter),但它只能告訴我邊界框的一部分是否相交,而不是一個是否包含在另一箇中。

有沒有簡單的方法來做到這一點?

編輯:

現在看來,我有些誤解的包圍盒的概念,但問題應該是簡單的。如果我可以在所有變換之後找到計算rectOuter的四個頂點的方法,那麼只要rectInner的拐角位於由這些頂點構成的路徑的內部,整個矩形就是。我認爲。

回答

0
##### coffeescript 
el = Snap('rect#outer') 
mat = el.attr('transform').totalMatrix 

left = +el.attr('x') 
top = +el.attr('y') 
right = left + (+el.attr('width')) 
bottom = top + (+el.attr('height')) 

console.log(left, top, right, bottom) 

points = { 
    x: mat.x(left, top) 
    y: mat.y(left, top) 
    x2:mat.x(right, top) 
    y2:mat.y(right, top) 
    x3:mat.x(right, bottom) 
    y3:mat.y(right, bottom) 
    x4:mat.x(left, bottom) 
    y4:mat.y(left, bottom) 
} 

使用矩陣! 你可以在mat變量中找到更多的矩陣。 如果totalMatrix沒有工作,那麼嘗試另一個。

相關問題