計算幾何知識歸納

2021-08-21 20:52:31 字數 3860 閱讀 5394

目錄

㈡ 線段及直線的基本運算

1. 點與線段的關係

2. 求點到線段所在直線垂線的垂足

3. 點到線段的最近點

4. 點到線段所在直線的距離

5. 點到折線集的最近距離

6. 判斷圓是否在多邊形內

7. 求向量夾角余弦

8. 求線段之間的夾角

9. 判斷線段是否相交

10. 判斷線段是否相交但不交在端點處

11. 求線段所在直線的方程

12. 求直線的斜率

13. 求直線的傾斜角

14. 求點關於某直線的對稱點

15. 判斷兩條直線是否相交及求直線交點

16. 判斷線段是否相交,如果相交返回交點

㈢ 多邊形常用演算法模組

1. 判斷多邊形是否簡單多邊形

2. 檢查多邊形頂點的凸凹性

3. 判斷多邊形是否凸多邊形

4. 求多邊形面積

5. 判斷多邊形頂點的排列方向,方法一

6. 判斷多邊形頂點的排列方向,方法二

7. 射線法判斷點是否在多邊形內

8. 判斷點是否在凸多邊形內

9. 尋找點集的graham演算法

10. 尋找點集凸包的卷包裹法

11. 判斷線段是否在多邊形內

12. 求簡單多邊形的重心

13. 求凸多邊形的重心

14. 求肯定在給定多邊形內的乙個點

15. 求從多邊形外一點出發到該多邊形的切線

16. 判斷多邊形的核是否存在

㈣ 圓的基本運算

1. 點是否在圓內

2. 求不共線的三點所確定的圓

㈤ 矩形的基本運算

1. 已知矩形三點座標,求第4點座標

㈥ 常用演算法的描述

㈦ 補充

1. 兩圓關係

2. 判斷圓是否在矩形內

3. 點到平面的距離:

4. 點是否在直線同側:

5. 鏡面反射線:

6. 矩形包含:

7. 兩圓交點:

8. 兩圓公共面積:

9. 圓和直線關係:

10. 內切圓:

11. 求切點:

12. 線段的左右旋:

13. 公式:

點和向量

1、點和向量定義

在平面座標系下,向量和點一樣,均用兩個數x,y表示。

struct point 

};typedef point vector;//從程式實現上來說,向量是點的別名

2、向量加減、數乘

vector operator + (vector a, vector b)

vector operator - (vector a, vector b)

vector operator * (vector a, double p)

vector operator / (vector a, double p)

double dist(point a, point b)

3、 判斷兩個點是否重合及先後順序

bool operator < (const point & a, const point & b)

const

double eps = 1e-10;

int dcmp(double x)//三態函式,處理與double零有關的精度問題

bool

operator = (const point & a, const point & b)

4、向量極角

極角,即從x軸正半軸旋轉到該向量方向所需要的角度。

直接呼叫庫函式float atan2(float x, float y)即可計算極角(單位:弧度)

5、向量點積

double dot(vector a, vector b)

double length(vector a)

double

angle(vector a, vector b)

6、向量叉積

double cross(vector a, vector b)

double area2(point a, point b, point

c)

7、向量旋轉

vector rotate(vector a, double rad)//rad為弧度

8、向量的單位法線

單位法線即旋轉90度後,把長度歸一化

//呼叫前確保a不是零向量

vector normal(vector a)

1、線的表示方法

2、直線交點

// 呼叫函式前確保有唯一交點

point getlineintersection(point p, vector v, point q, vector w)

3、點到直線的距離

double distancetoline(point p, point a, point b)

4、點到線段的距離

設投影點為q

double distancetosegment(point p, point a, point b)

5、點在直線上的投影

point getlineprojection(point p, point a, point b)

double onsegment(point p, point a1, point a2)

7、線段相交判定

bool segmentproperintersection(point a1, point a2, point b1, point b2)

1、多邊形面積

double polygonarea(point * p, int n)

return area / 2;//因為前面都計算的是四邊形的面積。

}

2、點在多邊形內判定

int ispointinpolygon(point p, polygon poly)

if(wn != 0)

return

1;//內部

return

0;//外部

}

int ispointinpolygon(point p, polygon poly)

if(dcmp(area2(poly

[l], poly

[r], p)) <= 0)//p在該射線的右邊,即在三角形上面

return -1;//外部

return

1;//內部

}

計算幾何 預備知識

pi的定義 const double pi acos 1.0 最大值的定義 const double inf 0x3f3f3f3f 向上取整 int a ceil double t 向下取整 int a floor double t 四捨五入 int a round double t 內積運算 又稱...

計算幾何知識點

公式描述 公式中a,b,c分別為三角形三邊長,p為半周長,s為三角形的面積。3.三角形外接圓半徑公式 公式描述 公式中a,b,c分別為三角形的三邊,s為面積。4.正多邊形外角和為360度,各個外角相等且等於各邊所對應圓心角 5.正多變形面積 sin a r r n 2 a為圓心角,r為外接圓半徑,n...

計算幾何小知識整理

vec x1,y1 vec y1,y2 vec 與 vec 的夾角為 theta cos theta x1 cdot x2 y1 cdot y2 sqrt cdot sqrt theta acos x1 cdot x2 y1 cdot y2 sqrt cdot sqrt vec x1,y1 vec ...