計算幾何學習筆記

2021-07-04 03:24:12 字數 1007 閱讀 6138

基礎部分

#include using namespace std;

#define type double

#define vector point

#define eps 1e-8

const double pi = 3.14159265358979323;

type deg2red(type deg)

type rad2deg(type rad)

inline type abs(type x)

//二維點/二維向量

struct point

point(type x,type y):x(x),y(y)

point operator-(point other)

};//向量點積

type dot(vector a,vector b)

//向量叉積

type cross(vector a,vector b)

//向量長度

double length(vector a)

//兩向量夾角

type angle(vector a,vector b)

多邊形

//多邊形面積(點必須按順時針或逆時針順序給出) 

type area(point* pts,int sz)

if(r-l==3)

int mid = (l+r)>>1;

type minl=nearest(pts,l,mid);

type minr=nearest(pts,mid,r);

type re = min(minl,minr);

int cnt=0;

int pos;

//tmp暫存分割線附近的點

pos=mid-1;

while(1)else

}pos=mid;

while(1)

}return re;

}

計算幾何學習筆記

計算幾何是什麼東西?能吃嗎?給定 n 個點 x i,yi 問 歐幾里得 距離最近的點對。如果用樸素的兩兩枚舉,需要o n2 的時間。考慮用分治法,先將點按照先 x 後 y排序。考慮對一段點 l r 的處理。在 放一根平行於y軸的線,其左邊的答案為a,右邊為b,設 min a,b 考慮如果有跨這條線的...

計算幾何學習筆記

計算幾何基本採用向量來表示點 線 麵等基本元素,而非我們平時常用的解析式。向量的基礎運算法則 給定兩個向量 p x 1,y 1 q x 2,y 2 加法 p q x 1 x 2,y 1 y 2 減法 p q x 1 x 2,y 1 y 2 數乘 lambda p lambda x 1,lambda ...

計算幾何學習筆記

這部分沒啥好講的。點可以使用座標表示,向量可以使用點表示。這裡記錄一些我知道的基礎知識。對於向量 a x,y 其長度記為 a sqrt 對於兩個向量 a x 1,y 1 b x 2,y 2 他們的叉積是 a times b x 1 cdot y 2 x 2 cdot y 1 叉積的絕對值還等於以這兩...