int pnpoly(int nvert,float *vertx,float *verty,float testx,float testy)
{
int i,j,c = 0;
for (i = 0,j = nvert-1;我& ltnvertj = i++) {
if(((verty[I]& gt;暴躁)!=(verty[j]& gt;暴躁))& amp& amp
(testx & lt(vertx[j]-vertx[I])*(testy-verty[I])/(verty[j]-verty[I])+vertx[I]))
c =!c;
}
返回c;
}
參數描述:
Nvert:多邊形的頂點數。
Vertx,verty:分別是頂點x坐標和y坐標的數組。
Testx,testy:被測點的X和Y坐標。
擴展數據:
判斷壹個點是否在多邊形內部最簡單的方法就是使用射線法,因為它可以適用於所有類型的多邊形,不考慮特殊情況,而且速度更快。
算法的思想很簡單:在多邊形外的任意壹點畫壹條虛擬射線到p(x,y)上,然後計算射線與多邊形上的邊相交的次數。如果數字是偶數,則表示p(x,y)在多邊形外,如果是奇數,則在多邊形內。