查了一下程式函數,沒這個;至於數學公式嘛!應該有吧,不過我不知道。就改用比較笨的方式,利用圖解法來處理。
基本上,點與已知多邊形的關係,有在區域內,區域外及線上(判斷是否在線上,又是一個頭痛的問題,因為要處理弧線段跟直線原理不同,還在研究中..)。
作法大致是這樣的:
1.建立一條由該點放射出去的放射線。
2. 利用IntersectWith方法檢核交叉點點數。
3. 先排除點是否在線上。
3.
當點數=奇數則為區域內點
點數=0或偶數則為區域外點。
4. 特殊情況檢核:
放射線是否經過角點
若是,則奇數可能又變成是區域外
偶數可能又變成區域內。
我之所以說可能是"可能也不是",因為可能同時穿越兩個角點、三個角點.....以及射線與某邊重疊的問題。
這樣程式可會沒完沒了,只是檢核一個點的狀況就....,乾脆用作弊的方式(註:這樣還是有風險,只是風險降低), 就是三選二,由該點放射三個任意角度的放射線,少數服從多數 ><
沒有留言:
張貼留言