有沒有一種方法來檢查,如果一個對象(在我的例子形象)是另一個對象的內部(在我的例子多邊形)。 我創建了一個小型的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)。也許我可以結合這兩種功能來獲得我想要的,但我希望可能有一個更簡單的解決方案。
我試着周圍一點點,認爲最好的辦法,如果事情是內部的一個目的是獲得它的中心,並檢查是否該點包含在對象中。有沒有辦法獲得圖像的中心?