【計算幾何】點定位(線段,三角形,多邊形)
判斷是否點線上段上
1.滿足向量 AC×AB == 0,使C點滿足在AB的直線上
2.滿足C在AB構成的矩形內,使C點排除在AB的延長線和反向延長線上
注意:考慮豎直和水平的情況,橫座標和縱座標都要判斷。
bool dot_line(point a,point b,point c)
{
V v_line,v_dot;
v_line.start = a;
v_line.end = b;
v_dot.start = a;
v_dot.end = c;
double temp = cross_mul(v_line,v_dot);
if(fabs(temp) < esp && c.x >= min(a.x,b.x) && c.x <= max(a.x,b.x) && c.y >= min(a.y,b.y) && c.y <= max(a.y,b.y))
return true;
return false;
}
判斷點在三角形內外
點在平面內與三角形三個點構成的三個三角形的面積和 與 原三角形的面積比較
如果相等,即可判斷在三角形內
struct triangle
{
point a,b,c;
};
bool dot_triangle(point x,triangle f)
{
V ax,bx,cx,ab,ac;
ax.start = f.a;
ax.end = x;
bx.start = f.b;
bx.end = x;
cx.start = f.c;
cx.end = x;
ab.start = f.a;
ab.end = f.b;
ac.start = f.a;
ac.end = f.c;
double abx = fabs(cross_mul(ax,bx));
double acx = fabs(cross_mul(ax,cx));
double bcx = fabs(cross_mul(bx,cx));
double abc = fabs(cross_mul(ab,ac));
if(fabs(abx+acx+bcx - abc) < esp)
return true;
return false;
}
判斷點在多邊形內外
1. 掃描線法
顧名思義,從要判斷的點構造任意射線,計算射線與多邊形的交點個數,一般情況下,個數為奇數則在多邊形裡面,反之在外面。
既然寫一般情況,那麼就有特殊情況。
除了要注意,在用多邊形的邊和射線相交來算交點,如果交於頂點處,射線與兩個邊相交,但只能算一個點
也有可能射線與邊重合,還有可能點在多邊形邊上,
另外最麻煩的是如下圖情況,只能算一個點,然而書上的解決方法(如果頂點是所屬邊上縱座標上較大的頂點)我不大認同,我想下圖反一下不就行不通了嗎,可能是我沒懂。。。
2. 叉乘判別法(只適用凸多邊形)
原理比較簡單,對於一個處於凸多邊形內部的點,與所有頂點連線,生成以此點開始的向量,根據頂點的順序運算相鄰向量的叉積,叉積的符號一直不變。
特殊情況:叉積為0,其實繼續判斷即可。
3. 角度和的判斷法
原理更簡單,在多邊形內部,點和多邊形頂點連線組成的所有三角形角度(以所求點為頂點)和為360。
相關文章
- 【計算幾何】多邊形點集排序排序
- 【計算幾何】點在多邊形內部
- 【計算幾何】多邊形交集
- 【計算幾何】線段相交
- 【計算幾何】求線段相交交點座標
- [幾何]計算不規則多邊形的面積、中心、重心
- [計算幾何]圓與三角形是否相交
- POJ 1408-Fishnet(計算幾何-根據交點求多邊形面積)
- POJ 1039-Pipe(計算幾何-線段相交、求交點)
- POJ 2991 Crane(線段樹+計算幾何)
- HDU 4643 GSM(計算幾何求線段的中垂線)
- 【JAVA】多邊形重心計算Java
- 邊緣計算、霧計算、雲端計算區別幾何?
- POJ 1127-Jack Straws(計算幾何 線段相交)
- 線段與多邊形關係的演算法演算法
- POJ 1584-A Round Peg in a Ground Hole(計算幾何-凸包、點到線段距離)
- 計算幾何
- 計算任意多邊形的面積(Android)Android
- 計算幾何:模板
- 第九章第九題(幾何:正多邊形)(Geometry: regular polygons)Go
- 【D3.js學習總結】22、D3幾何-泰森多邊形JS
- [筆記] 計算幾何筆記
- 純CSS畫的基本圖形(矩形、圓形、三角形、多邊形、愛心、八卦CSS
- 折線(Polyline)、多邊形(Polygon)Go
- 計算機圖形學(四)_幾何變換_1_基本的二維幾何變換(一)計算機
- 判斷點是否在多邊形內斷點
- 【計算幾何】向量表示
- 【總結】計算幾何模板
- 二維計算幾何模板
- 三維計算幾何模板
- # 數值計算:三角形積分
- Codeforces Round #358 (Div. 2) E 計算幾何 旋轉卡殼求最大三角形面積
- BZOJ 1043: [HAOI2008]下落的圓盤 計算幾何,貪心,線段交
- 判斷點是否在多邊形內部斷點
- [WebGL入門]六,頂點和多邊形Web
- 計算機圖形學(四)_幾何變換_1_基本的二維幾何變換(二)_旋轉計算機
- 計算機圖形學(四)_幾何變換_1_基本的二維幾何變換(三)_縮放計算機
- 計算幾何 —— 二維幾何基礎 —— 距離度量方法