2016-12-19 55 views
1

有沒有一種方法來檢查,如果一個對象(在我的例子形象)是另一個對象的內部(在我的例子多邊形)。 我創建了一個小型的jsfiddle:http://jsfiddle.net/onot3w11/FabricJS檢查,如果圖像是多邊形的內部

這裏是我的代碼,基本上添加一個多邊形圖像和測試,如果圖像是多邊形的內部:

/*_________adding shapes____*/ 
var imgInstance = new fabric.Image(imgElement, { 
    left: 100, 
    top: 100, 
    angle: 30, 
    opacity: 0.85,    
    width: 150, 
    height: 150, 
}); 


var pol2 = new fabric.Polygon([ 
    {x: 300, y: 50}, 
    {x: 300, y: 250}, 
    {x: 150, y: 250}, 
    {x: 150, y: 50} ], { 
    left: 20, 
    top: 100, 
    angle: 0, 
    fill: 'grey', 
    opacity: 0.1 
    } 
); 
canvas.add(pol2); 
canvas.add(imgInstance); 

/*_________testing if image is inside polygon____*/ 
console.log(imgInstance.isContainedWithinObject(pol2)); 

聖誕樹是內部多邊形,但由於其邊框,「isContainedWithinObject」在控制檯中返回「false」。還有另外一個函數,如果兩個對象相互交叉,它只返回true(但如果一個對象完全位於另一個對象http://fabricjs.com/intersection內,則返回false)。也許我可以結合這兩種功能來獲得我想要的,但我希望可能有一個更簡單的解決方案。

我試着周圍一點點,認爲最好的辦法,如果事情是內部的一個目的是獲得它的中心,並檢查是否該點包含在對象中。有沒有辦法獲得圖像的中心?

回答

相關問題