orz發現之前的版子有小錯誤都不知道怎麼在用2333
8.8更新多邊形計算+求直線交點 順便把之前版子統一了一下 希望這周解決計算幾何 然後就不用再看模板了
忘記加重載 / 了。。 更了另乙個求交點情況,不會有除0情況出現
#include#includeview code#include
#include
using
namespace
std;
const
int inf = 0x3f3f3f3f
;const
int maxn = 100
;const
double eps = 1e-6
;int sgn(double x)
double sqr(double x)
double mysqrt(double n)
struct
point
};typedef point vector;
//向量-向量
vector operator -(const vector &a, const vector &b)
//向量+向量
vector operator +(const vector &a, const vector &b)
//向量*常數
vector operator *(const
double &a, const vector &b)
vector
operator *(const vector &a, const
double &b)
vector
operator /(const vector &a, const
double &b)
//向量*向量 dot
double dot(const vector &a,const vector &b)
//向量x向量
double cross(const vector &a,const vector &b)
//向量==向量
bool isequal(const vector &a,const vector &b)
double length(vector a)
//ab夾角
double angle(vector a,vector b)
//ab、ac組成的平行四邊形面積
double area(point a,point b,point c)
//a逆時針旋轉弧度rad後的向量
vector rotate(vector a,double rad)
//計算a的單位法線,保證a不為0向量
vector normal(vector a)
struct
line
line(point _s,point _e)
};//
線段是否相交、端點算相交
bool
inter(line l1,line l2)
//線段是否相交、端點不算相交
bool
inter2(line l1,line l2)
//求n邊形的面積、res[0~n-1]順序存頂點、n為頂點數,res[n]=res[0]
double area(point res,int
n)
return fabs(ret/2);}
//求兩線交點,要先判斷有無交點
point getlineinterpoint(line l1,line l2)
//求ab與pq交點,功能同上個函式一樣
point crosspt(const point &a, const point &b, const point &p, const point &q)
二維計算幾何模板(點,線)
include include include include include include include include include include include define e exp 1.0 define mod 1000000007 define inf 0x7fffffff d...
計算幾何點,直線,線段模板
include include include include include include define pi acos 1 using namespace std struct point 點 向量 typedef point vector 向量使用點作為表示方法 結構相同 為了 清晰 con...
計算幾何 線段
首先是直線相交,這個簡單,就是看斜率,斜率不同則相交。重點分析線段與線段相交,給你兩組座標p1 x1,y1 p2 x2,y2 q1 x3,y3 q2 x4,y4 判斷p1p2與q1q2是否相交 首先可以很快排除下面四種情況 對於第 種情況滿足條件 max q1.x,q2.x max q1.x,q2....