我在KineticJS工作不久前,我有一個問題。KineticJS得到所有的交叉點
我可以繪製圓圈(白色,藍色和紅色),然後我會沿着藍色圓圈的路徑繪製多邊形。
但是我如何找到座標,或者至少是關於紅圈的內容。也就是說,那些屬於以下多邊形的人。
我試過使用getIntersection
但我不明白它返回什麼。對不起,我的英語不好。提前致謝!!
http://imageshack.us/scaled/thumb/42/7gok.jpg
我在KineticJS工作不久前,我有一個問題。KineticJS得到所有的交叉點
我可以繪製圓圈(白色,藍色和紅色),然後我會沿着藍色圓圈的路徑繪製多邊形。
但是我如何找到座標,或者至少是關於紅圈的內容。也就是說,那些屬於以下多邊形的人。
我試過使用getIntersection
但我不明白它返回什麼。對不起,我的英語不好。提前致謝!!
http://imageshack.us/scaled/thumb/42/7gok.jpg
我從你的照片,所有的紅色和藍色的點定位在網格承擔。
這意味着,任何點的x和y被夾緊到該網格(軸線對齊)
我進一步假定藍點定義的多邊形的外部。
所以你想看看是否有任何特定的紅點是在該多邊形內?
根據這些假設,任何紅點是你的多邊形內,如果它是由藍點包圍所有4個垂直和水平雙方
藍點至左紅點
blueY==redY && blueX<redX
紅點右邊的藍點
blueY==redY && blueX>redX
藍點上方的紅點
blueX==redX && blueY<redY
藍點下方紅點
blueX==redX && blueY>redY
首先,你需要能夠得到所有的藍色小點,所以當你創建藍點一定要給它們分配一個藍色的名稱屬性
name:"blue",
然後你可以使用這個函數測試任何紅點tha牛逼檢查該紅點是由藍點包圍:
function isRedInPolygon(red){
// get XY of the red circle
var redX=red.getX();
var redY=red.getY();
// set up vars for results
// these vars become true when blue dots are
// directly up, down, left and right of the red dot
var up=false;
var down=false;
var left=false;
var right=false;
// get all the blue dots into an array
var blues=layer.get('.blue').toArray();
for(var j=0;j<blues.length;j++){
// get the XY of this blue
var blue=blues[j];
blueX=blues[j].getX();
blueY=blues[j].getY();
// test left/right
if(blueX==redX){
// left
if(blueY<redY){ up=true; }
// right
if(blueY>redY){ down=true; }
}
// test up/down
if(blue.Y==red.Y){
if(blueX<redX){ left=true; }
if(blueX>redX){ right=true; }
}
}
// return true if this red dot is surrounded
// by blue dots on all 4 sides
return(up && down && left && right);
}
要獲得所有紅色對象的列表多邊形
首先裏面,名字=「紅色」分配給所有紅點。
name:"red",
然後使用此調用來獲取多邊形中所有紅色對象的數組。
var redsInside = listOfRedsInPolygon();
使用此功能:
function listOfRedsInPolygon(){
var reds=layer.get('.red').toArray();
var redsInsidePolygon=[];
for(var i=0;i<reds.length;i++){
if(isRedInPolygon(reds[i])){
redsInsidePolygon.push(reds[i]);
}
}
return(redsInsidePolygon);
}
聲明:我沒有測試此代碼...這可能需要一些調整。
你已經真正理解了這個問題,但我需要別的東西,我認爲是這樣。我有所有的藍點,我需要調用一個函數來檢查是否有紅點,你已經創建了一個函數來檢查一個點(紅色)是否在多邊形內,但是如何將她的點發送給紅點? – webenter
我已添加到我的答案中,以顯示如何獲取多邊形中所有紅色對象的數組。 – markE
謝謝你的回答,它幫助了我! – webenter