判斷乙個點是否在多邊形內部
三角形的有向面積:
我們先判斷乙個點是否在乙個三角形內部。乙個三角形在乙個座標系(譬如由a、b、c三點組成)中,我們可以通過計算它的有向面積來判斷a、b、c三點在座標系中的順逆。當然,在此之前我們必須先訂立一套計算面積的規則。比如,在笛卡爾座標系中,我們利用:
s=((a.x-b.x)*(a.y+b.y)+(b.x-c.x)*(b.y+c.y)+(c.x-a.x)*(c.y+b.y))/2
----------------------------------
<1>
來計算三角形的有向面積。規則即是:從第一點開始,用前一點橫座標減後一點橫座標與兩座標之和的乘積求梯形面積,直到完成多邊性的封閉,得到三角形的有向面積。此時,如果求出的值是正的(s>0),則得出a->b->c為逆時針,否則為逆時針。
判斷點在三角形內:
假設存在乙個點d,若這個點在三角形的內部,則以該點為起點,和原多邊形的任意兩個連續的且尊照多邊形組成方向的點(如dab、dbc、dca)組成的三角形講都是乙個方向,如dab和dbc都是順時針方向。若這個點在三角形的外部,則會出現dab、dbc、dca三個三角形方向不一致的情形,即其中有乙個不同於另外兩個(如乙個順,兩個逆)。
通過判斷該點同三角形連續兩點組成三角形的順逆性(歸於面積的正負)來判斷點是否在三角形內。
判斷點在凸多邊形內:
實際上,對於其他的凸多邊性也可以用一樣的方法,只是這個時候判斷的三角形的數目增加了,不管怎麼樣,只要點在多邊形內部他們的順逆都是一樣的。
判斷點在凹多邊形內:
對於凹多邊形而言,情況就要相對複雜一些了。此時,判斷乙個點是否在其內部的計算量會增加比較多。具體演算法如下:此時三角形乙個個的判斷可能會失效,我們應當兩個同時判斷。即判斷該點是否同時在多邊形的連續兩個三角形之中,相當於是求兩個三角形的交集,直到完成多邊形封閉。例如,判斷p點是否在多邊形abcd之中,依次判斷p是否在abc-bcd、bcd-cda、cda-dab、dab-abc各個成對三角形中,p在abc-bcd中表示p在abc-bcd的交集之中。這樣就可以判斷乙個點是否在乙個凹多邊形內部了。
判斷乙個點是否在多邊形中
例項 1 圖 1是乙個典型的14邊形,紅點為測試點,判斷該紅點是否在14邊形中。解決方法 穿過紅點,做一條平行於x軸的水平線,於14邊形共有8個交點,如果,在紅點的左右兩邊各有奇數個交點,那麼在多邊形中 如果,左右兩邊各有偶數個交點,那麼不在多邊形中 圖 2 例項 2 多邊形是交叉的且封閉的。如圖二...
判斷乙個點是否在多邊形內
演算法 如果是凸多邊形,我覺得這樣很方便 1 在多邊形內任取一點a 比如是某對角線的中點,如果是三角形則取某中線的中點 2 判斷未知點 設為b 與a是否在任何一條邊的同側。方法簡單有效 設任一邊的直線方程為 y ax b 令f x ax b y 只需判斷f a f b 0 a,b同側 0 在邊上 0...
判斷乙個點是否在多邊形內部 射線法思路
判斷乙個點是否在多邊形內部 1 射線法思路 判斷乙個點是否在多邊形內部 2 射線法實現 比如說,我就隨便塗了乙個多邊形和乙個點,現在我要給出一種通用的方法來判斷這個點是不是在多邊形內部 別告訴我用肉眼觀察 首先想到的乙個解法是從這個點做一條射線,計算它跟多邊形邊界的交點個數,如果交點個數為奇數,那麼...