程序代碼如下(直接套用函數pnpoly):
int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
{
int i, j, c = 0;
for (i = 0, j = nvert-1; i < nvert; j = i++) {
if ( ((verty[i]>testy) != (verty[j]>testy)) &&
(testx < (vertx[j]-vertx[i]) * (testy-verty[i]) / (verty[j]-verty[i]) + vertx[i]) )
c = !c;
}
return c;
}
參數說明:
nvert: 多邊形的頂點數
vertx, verty: 頂點X坐標和Y坐標分別組成的數組
testx, testy: 需要測試的點的X坐標和Y坐標
擴展資料:
判定壹個點是否在多邊形內部最簡單的方法是使用射線法,因為它能適用於所有類型的多邊形,不用考慮特殊的情況而且速度也比較快。
該算法的思想很簡單:在多邊形外面任意壹點畫壹條虛擬的射線到p(x,y)然後計算該射線與多邊形上的邊相交的次數。如果該次數是偶數,說明p(x,y)在多邊形外,如果是奇數,則在多邊形內。