計算幾何經典操作

2021-07-30 23:51:14 字數 1010 閱讀 3640

不完整**o(∩_∩)o~,提供幾種常用操作的模板

這裡寫**片

#include

#include

#include

#include

using

namespace

std;

const

double eps=1e-8;

const

int n=10000;

struct node

}; node po[n];

//過載運算子

node operator +(const node &a,const node &b)

node operator -(const node &a,const node &b)

node operator *(const node &a,const

double &b) //向量與實數的運算

node operator /(const node &a,const

double &b)

//比較實數的時候先做差再用dcmp比較

int dcmp(double x)

double dot(node a,node b)//點積

double cross(node a,node b)//叉積 /*

兩向量的夾角為α

兩向量垂直,點積為0 (cosα)

兩向量共線(平行),叉積為0 (sinα)

如果a b夾角大於90度,點積為負,小於90度,點積為正

如果a旋轉到b是逆時針,則叉積為正,否則叉積為負

*///向量v(x,y)逆時針旋轉a弧度(到v'),則

//x'=xcosa-ysina=x*(dot(a,b))-y(cross(a,b))

//y'=xsina+ycosa=x*(cross(a,b))-y(dot(a,b))

double ss(int n) //多邊形面積

int main()

計算幾何 經典演算法 凸包

在學習了一些有關計算機幾何的基礎知識和一些基本工具之後要快速的解決一些簡單的幾何問題,如兩點之間的距離 兩線段的交點個數等等是可以輕鬆應付的,但是對於複雜點的幾何問題,我們還是要有更好的演算法,這樣才可以更高效的解決它。在這一篇中來總結 平面凸包 的 graham演算法 平面凸包 定義 對乙個簡單多...

計算幾何基本操作總結

挖坑自用,可能又不全面的地方歡迎指出 double已被define為db 點與向量 點與向量是乙個二元組,在運算方面相似,因此可以定義成乙個結構體 struct point point db x db y point operator const point a const point operat...

計算幾何基礎 《演算法競賽入門經典》

includeusing namespace std const int n 1e3 struct point 建構函式,方便 編寫 struct polygon struct circle typedef point vector 程式上實現向量與點的結構體相同,一組 x,y 可以代表一點點或者乙...