終於開始入手計算幾何了呀
用了一天學了挺多知識了,打了一些模板題
比較簡單也就不一一枚舉了
這裡先放出來乙個可能有所錯漏的板子
會慢慢改動的
模板十分簡潔!!!
#include
#include
#include
#include
#include
#define db double
using
namespace std;
const
int n =
1e5+10;
const db eps =
1e-8
,pi =
acos(-
1);int
dcmp
(db x)
struct pt
pt(db x,db y):x
(x),
y(y)};
pt operator
-(pt a,pt b)
pt operator
+(pt a,pt b)
pt operator
*(pt a,db d)
db operator
*(pt a,pt b)
db cs
(pt a,pt b)
db cs
(pt a,pt b,pt c)
//vector_rotate
pt vrt
(pt a,db t)
struct line
line
(pt x,pt y):x
(x),
y(y)};
//is_on_right
bool
or(pt p,line a)
pt lip
(line a,line b)
db cpa
(pt p,
int n)
return ans /
2.0;
}//凸包
bool
acmp
(pt a,pt b)
intandrew
(pt p,
int n,pt s,
int m)
int k = m;
for(
int i = n -
1;i >=
1;i --)if
(n >
1) m --
;return m;
}//旋轉卡殼
//get_distance
intgd
(pt a)
intrc
(pt s,
int m)
return ans;
}//半平面交
bool
hpicmp
(line a,line b)
inthpi
(line l[
],line q[
],pt s,
int cnt)
while
(l < r &&
or(s[r -1]
,q[l]
)) r --
;while
(l < r &&
or(s[l]
,q[r]
)) l ++
; s[r]
=lip
(q[l]
,q[r]);
if(r - l +
1<=1)
return0;
return r - l +1;
}
計算幾何初步
三個問題 1 給定的向量p0p1和p0p2,以p0為公共點,p0p1到p0p2是否構成右手螺旋 逆時針 2 給定兩條線段p0p1和p1p2,如果我們遍歷p0p1和p1p2,能否判斷p2在p0p1的左邊?3 線段p0p1和p3p4相交嗎?定義.矩陣的行列式 p1xp2 0 p1以 0,0 為起點,在p...
計算幾何初步認識
一 點。點的座標a x1,y1 b x2,y2 二 向量。向量ab x2 x1,y2 y1 x3,y3 cd x4,y4 向量的模 ab sqrt x3 x3 y3 y3 即向量的長度。三 點積。點積的結果為乙個數值。數值計算方法ab cd x3 x4 y3 y4。幾何意義ab cd ab cd c...
計算幾何初步 三點順序
三點順序 給出不共線的三個點a,b,c的座標,推斷a,b,c是順時針給出的還是逆時針給出的?利用向量叉積推斷是逆時針還是順時針。設向量p x1 y1 q x2 y2 則p,q向量叉積定義為 p q x1 y2 x2 y1,也就是 p q sin a 即p,q張成的平行四邊形的面積。a的取值不同,會帶...