計算幾何 常用幾何函式(模板)

2021-08-06 04:07:07 字數 542 閱讀 6085

浮點誤差與精度問題

實數是用浮點數運算的,精度受到限制,特別是乘除法之後,誤差比較大。此時》=《是可能出現誤差的。我們可以認為非常接近0的實數都是0,寫乙個實數的三出口函式。

**:

const double eps=1e-8;

int dcmp(double d)

叉積判斷方向

p1×p2 = x1y2 - x2y1 = - p2×p1

若p1×p2為正,則相對於原點(0,0)來說,p2位於p1逆時針方向;若p1×p2為負,p2位於p1順時針方向;若為0則方向相同,或相反。

(1)(q - p1) * (p2 - p1)= 0;

(2)q在以p1,p2為對角頂點的矩形內;

struct point  

;

bool onsegment(point pi , point pj , point q)

計算幾何常用公式 模板

const double pi acos 1 const double eps 1e 6 精度 int sgn double a,double b 當確定直線和線段相交時,求他們的交點 利用叉積可判斷,線段兩端點是否在直線的兩側 struct point p n double cross point...

計算幾何模板

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