計算幾何模板

2021-10-04 15:43:52 字數 1761 閱讀 9102

計算幾何模板

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