當前位置:編程學習大全網 - 編程軟體 - 速求 c語言編程 給定n個點的坐標,這n個點依次圍成壹閉合多邊形,再給壹點(x,y),判斷它是否在多邊形中

速求 c語言編程 給定n個點的坐標,這n個點依次圍成壹閉合多邊形,再給壹點(x,y),判斷它是否在多邊形中

程序代碼如下(直接套用函數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)在多邊形外,如果是奇數,則在多邊形內。

  • 上一篇:starpu是什麽 Linux
  • 下一篇:武漢麗景苑小區周邊配套怎麽樣?
  • copyright 2024編程學習大全網