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

2021-08-07 13:29:28 字數 1339 閱讀 9485

#include #include #include #include #include #include #define pi acos(-1)

using namespace std;

struct point//點 向量

};typedef  point  vector;

//向量使用點作為表示方法 結構相同 為了**清晰

const double eps = 1e-8;

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

//向量運算

vector operator + (vector a, vector b)

vector operator - (vector a, vector b)

vector operator * (vector a, double p)

vector operator / (vector a, double p)

bool operator == (const vector& a, const vector& b)

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

//點在直線上的投影

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

//判斷線段相交(每條線段的兩個端點都在另一條線段的兩側)(含端點的話把《改為<=)

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

//點是否在一條線段上(不含線段的端點)(含端點的話把《改為<=)

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

//多邊形有向面積 支援非凸多邊形

double polygonarea(point *p, int n)

int k = m;

for(int i = n-2; i >= 0; i--)

if(n > 1) m--;

return m;

}//旋轉卡殼求凸包最大距離

void rc(point ch,int n)

printf("%d\n",ans);

}//凸包求其重心

point tubaozhongxin(point ma,int n)

{    int i;

point p=ma[0];

point a=ma[1];

double hx=0.0,hy=0.0,sum_area=0.0;

for(i=2;i

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

include include include include include include include include include include using namespace std const int maxn 500 10 const int inf 1e9 7 const do...

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

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

poj3304 計算幾何 線段與直線相交

題意 給定n條線段,確定是否存在一條直線,使得這n條線段在這條直線上的射影具有公共點 可將問題轉化為是否存在一條直線經過所有的線段,證明見依然的部落格 include include include using namespace std const double eps 1e 8 const in...