計算幾何初步

2021-10-20 16:26:44 字數 1820 閱讀 7743

終於開始入手計算幾何了呀

用了一天學了挺多知識了,打了一些模板題

比較簡單也就不一一枚舉了

這裡先放出來乙個可能有所錯漏的板子

會慢慢改動的

模板十分簡潔!!!

#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的取值不同,會帶...