計算幾何模板 點類以及線段類

2021-08-06 07:47:07 字數 2141 閱讀 3984

#include#include#include#include#include#include#include #include #include #include using namespace std;

const int maxn = 500+10;

const int inf=1e9+7;

const double eps=1e-8;

const double pi=acos(-1.0);

//計算幾何誤差修正

//輸入為乙個double型別的數,返回-1表示負數,1表示正數,0表示x為0

int cmp(double x)

//計算幾何點類

inline double sqr(double x)

struct point

point(double a,double b):x(a),y(b){}

void input()

//加法

friend point operator + (const point &a,const point &b)

//減法

friend point operator - (const point &a,const point &b)

//判斷相等

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

//倍增

friend point operator * (const point &a,const double &b)

//倍增

friend point operator * (const double &b,const point &a)

//除法

friend point operator / (const point &a,const double b)

//模長

double norm()

};//叉積,a×b>0代表a在b的順時針方向,<0代表a在b的逆時針方向,等於0代表a和b向量共線,但不確定方向是否相同

double det(const point &a,const point &b)

//點積

double dot(const point &a,const point &b)

//距離

double dist(const point &a,const point &b)

//op向量繞原點逆時針旋轉a(弧度)

point rotate_point(const point &p,double a)

//計算幾何線段類

struct line

line(point x,point y):a(x),b(y){}

void input()

};//用兩個點a,b生成的乙個線段或者直線

line point_make_line(point a,point b)

//求點p到線段st的距離

double dis_point_segment(point p,point s,point t)

//求點p到線段st的垂足,儲存在cp中

void pointprojline(point p,point s,point t,point &cp)

bool pointonsegment(point p,point s,point t)

//判斷a和b是否平行

bool parallel(line a,line b)

//判斷a和b是否共線

bool contribution(line a,line b)

//判斷a和b是否相交,若相交則返回true且交點儲存在res中

bool line_make_point(line a,line b,point &res)

//判斷線段是否相交

bool segment_make_point(line a,line b,point &res)

//判斷線段和直線是否相交,a是直線,b是線段

bool line_across_segment(line a,line b)

return true;

}//將直線a沿法向量方向平移距離len得到的直線

line move_d(line a,const double &len)

計算幾何點,直線,線段模板

include include include include include include define pi acos 1 using namespace std struct point 點 向量 typedef point vector 向量使用點作為表示方法 結構相同 為了 清晰 con...

計算幾何模板(點 線段)2 1

orz發現之前的版子有小錯誤都不知道怎麼在用2333 8.8更新多邊形計算 求直線交點 順便把之前版子統一了一下 希望這周解決計算幾何 然後就不用再看模板了 忘記加重載 了。更了另乙個求交點情況,不會有除0情況出現 include include include include using name...

計算幾何初步(面積以及三點順序)

設三角形三點為a x1,y1 b x2,y2 c x3,y3 三邊長為a,b,c,高為h,面積為s,p a b c 2 公式 s a h 2 b h 2 c h 2 s p p a p b p c 0.5 double area double x1,double y1,double x2,doubl...