如何確定二維點是否位于多邊形內?我想創造一個快地二維點內多邊形算法,用于命中測試。Polygon.contains(p:Point))。如能就有效的技術提出建議,將不勝感激。
3 回答

臨摹微笑
TA貢獻1982條經驗 獲得超2個贊
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;}
論點
內涵
多邊形中的頂點數。是否在結尾重復第一個頂點,已經在上面提到的文章中討論過了。 vertx,verty
數組包含多邊形頂點的x坐標和y坐標。 遺囑
*測試點的x和y坐標。
我從測試點水平地運行一條半無限射線(增加x,固定y),并計算它穿過多少個邊。在每個十字路口,光線在內部和外部之間切換。這叫做Jordan曲線定理。
添加回答
舉報
0/150
提交
取消