計算幾何模板
#include
#include
#include
#include
using namespace std;
#define db double
#define ll long long
const
int maxn =
4e6+10;
const db eps=
1e-9
;int
sign
(db a)
intcmp
(db a, db b)
struct point
point
(db _x,db _y):x
(_x),y
(_y)};
typedef point vec;
// 向量+向量 = 向量 ,點 + 向量 = 點
vec operator+
(vec a, vec b)
// 點 - 點 = 向量
vec operator-
(point a, point b)
//向量 * 數 = 向量
vec operator*
(vec a, db p)
//向量 / 數 = 向量
vec operator/
(vec a, db p)
bool operator ==
(const point &a ,
const point &b)
struct line
line
(point _a,point _b):a
(_a),b
(_b)};
/* 兩點間距離 */
db get_distance
(point a, point b)
// 兩向量的叉乘
db cross
(vec a,vec b)
db area2
(point a,point b,point c)
// 兩向量的點乘
db dot
(vec a,vec b)
//向量長度
db length
(vec a)
//向量角度
db angle
(vec a,vec b)
//求向量的單位法線(a不能是零向量)
vec normal
(vec a)
//求向量旋轉 , 逆時針旋轉角度rad
vec rotate
(vec a,db rad)
//求點到直線的距離
db dis_dot_line
(point p,point a,point b)
//求點到直線的投影
point getlineprojection
(point p,point a ,point b)
//線段相交 (規範相交)
bool segmentintersection
(point a1,point a2,point b1,point b2)
bool onsegment
(point p,point a1,point a2)
//點到線段的距離
db distancetosegment
(point p,point a,point b)
intmain()
計算幾何模板
sgn返回x經過eps處理的符號,負數返回 1,正數返回1,x的絕對值如果足夠小,就返回0。const double eps 1e 8 int sgn double x double mysqrt double x pt是point的縮寫 int版 struct pt pt int x,int y ...
計算幾何模板
include define vct point using namespace std const double pi atan2 0,1 const double eps 1e 8 int sgn double d struct point bool operator point b const...
計算幾何模板
多圓面積交 typedef long long ll typedef unsigned long long ull typedef vector vi const int inf 0x3f3f3f3f const double eps 1e 10 const int mod 100000007 co...