【計算幾何】點定位(線段,三角形,多邊形)
判斷是否點線上段上
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。
相關文章
- [幾何]計算不規則多邊形的面積、中心、重心
- [計算幾何]圓與三角形是否相交
- 【JAVA】多邊形重心計算Java
- 三維幾何生成:多段線、圓弧
- 邊緣計算、霧計算、雲端計算區別幾何?
- 計算幾何——平面最近點對
- 計算任意多邊形的面積(Android)Android
- 計算幾何
- 折線(Polyline)、多邊形(Polygon)Go
- 計算幾何模板
- 計算幾何:模板
- 第九章第九題(幾何:正多邊形)(Geometry: regular polygons)Go
- Something about 計算幾何
- [筆記] 計算幾何筆記
- JS 射線法 判斷點是否在多邊形內部JS斷點
- 【IDL】幾何圖形數學運算函式函式
- # 數值計算:三角形積分
- 【第一道計算幾何題】 UVA11178 Morley‘s Theorem (二維幾何,旋轉直線求求交點)REM
- halcon xld線段中點、端點和角度的計算
- 計算幾何 —— 二維幾何基礎 —— 距離度量方法
- 【學習筆記】計算幾何筆記
- POJ - 1556 【計算幾何 + 最短路】
- SGU 124 Broken line(計算幾何)
- 打破邊界,邊緣計算有何應用場景?
- SVG <polygon> 多邊形SVGGo
- opencv多邊形逼近OpenCV
- BNUOJ 12887 isumi(計算幾何+最大流)
- SGU 120 SGU 228 Archipelago(計算幾何)Go
- Python計算組合數生成楊輝三角形Python
- PCL(26)cropHull任意多邊形內部點雲提取
- 邊緣計算為何會如此受歡迎?
- IDL建立泰森多邊形
- 利用元素邊框巧妙的畫三角形
- 多邊形填充-活動邊表法
- python計算三角形面積詳細程式碼演示Python
- 【題解】A23328.四邊形的面積計算
- Problem:三角形計數
- Shell 程式設計--九九乘法表--等邊三角形--菱形程式設計
- matlab繪製正多邊形Matlab