#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...