国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言實現的PNPoly算法代碼例子

2020-01-26 15:29:35
字體:
來源:轉載
供稿:網友

寫C語言的實驗用到的一個算法,判斷一個點是否在多邊形的內部。C的代碼如下:

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分別是多邊形頂點橫、縱坐標的數組,textx和testy是待測點的坐標。這個算法是由W. Randolph Franklin提出的,根據Jordan curve theorem,多邊形將平面分為內外兩個區域,假設待測點在多邊形內部,從待測點引出一條射線必然會與多邊形有至少一個交點。該射線與多邊形第一次相交時將“沖出”多邊形,第二次相交將“進入”多邊形,依此類推,若射線與多邊形有奇數個交點,則該點在多邊形內部,反之則在外部。

PNPoly算法正是從待測點引出一條水平向右的射線,并計算與多邊形的交點個數。解釋一下這段代碼:for (i = 0, j = nvert-1; i < nvert; j = i++)循環的含義就是始終讓j = i

主站蜘蛛池模板: 宜兰市| 健康| 原平市| 锡林浩特市| 拉萨市| 名山县| 扬州市| 都匀市| 休宁县| 资兴市| 施甸县| 商南县| 扶绥县| 韩城市| 慈利县| 滕州市| 凤城市| 桓仁| 孝昌县| 玉溪市| 德格县| 郧西县| 徐水县| 新邵县| 淮北市| 桃江县| 临沭县| 竹山县| 莆田市| 廊坊市| 荣昌县| 武义县| 伊春市| 偏关县| 开封市| 张掖市| 梅河口市| 广东省| 山东省| 郸城县| 广东省|