使用Canvas繪制圖形時,為了使得在鼠標移動到某個多邊形內部時,對整個多邊形進行高亮顯示,這裡就需要用到判斷某個點是否在多邊形內部的算法.
其實用到的幾何原理就是, 從要判斷的點任意作一條射線, 然後計數射線與多邊形相交點的個數,若相交點個數為奇數個,剛此點位於多邊形內部,若相交點個數為偶數個,剛此點位於多邊形外部.
所以下面的三個方法就是實現這個目的.
檢驗方法
// CoffeeScript
// 多邊形
polygon = [
0, 0,
0, 2,
2, 2,
2, 0,
0, 0
];
point = [1, 1];
console.log insidePolygon(polygon, point[0], point[1]);
// = 1, 證明要檢驗的點位於多邊形內部