判斷乙個點是否在多邊形區域內 C演算法

2021-06-10 18:15:31 字數 574 閱讀 7028

/*

函式的輸入:

(1)當前點的座標p

(2)區域頂點陣列pt;

(3)頂點數ncount

輸出: 在區域內返回true,否則返回false。

point型別是乙個結構:

struct point;*/

bool ptinpolygon(point p, point pt, int ncount)

if (p.y < min(p1.y, p2.y) || p.y > max(p1.y, p2.y))

continue;

double x = (double)(p.y - p1.y) * (double)(p2.x - p1.x) / (double)(p2.y - p1.y) + p1.x;

if (x > p.x)

ncross++;

else if (x == p.x)

return true;

}if (ncross % 2 == 1)

return true;

return false;

} 建議轉換成整形,因為浮點形的比較可能會出現邊界問題

判斷乙個點是否在多邊形區域內 C演算法

函式的輸入 1 當前點的座標p 2 區域頂點陣列pt 3 頂點數ncount 輸出 在區域內返回true,否則返回false。point型別是乙個結構 struct point bool ptinpolygon point p,point pt,int ncount if p.y min p1.y,...

mysql 判斷點是否在指定多邊形區域內

1.建立測試表 create tablezone idint 10 unsigned not null auto increment,polygongeogeometry not null,primary key id engine myisam default charset utf8 2.插入多...

判斷乙個點是否在多邊形內

演算法 如果是凸多邊形,我覺得這樣很方便 1 在多邊形內任取一點a 比如是某對角線的中點,如果是三角形則取某中線的中點 2 判斷未知點 設為b 與a是否在任何一條邊的同側。方法簡單有效 設任一邊的直線方程為 y ax b 令f x ax b y 只需判斷f a f b 0 a,b同側 0 在邊上 0...