hdu 4404 Worms(多邊形與圓的交)

2021-06-18 06:08:34 字數 1736 閱讀 1354

求出**點的座標,就成了多邊形與圓相交面積的模板題了。。。

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define ff(i, a, b) for(int i=a; i=b; i--)

#define rep(i, n) for(int i=0; it sqr(t x)

vector operator + (vector a, vector b)

vector operator - (vector a, vector b)

vector operator * (vector a, double p)

vector operator / (vector a, double p)

bool operator < (const point& a, const point& b)

int dcmp(double x)

bool operator == (const point& a, const point& b)

double dot(vector a, vector b)

double length(vector a)

double angel(vector a, vector b)

double cross(vector a, vector b)

double torad(double d)

vector vecunit(vector x) //單位向量

vector normal(vector x) //垂直法向量

point getintersection(line a, line b) //線段交點

bool onsegment(point p, point a1, point a2)

bool incircle(point x, circle c)

bool oncircle(point x, circle c)

double angle(vector x)

//直線與圓交點

int getlinecircleintersection(line l, circle c, double& t1, double& t2, vector& sol)

t1 = (-f-sqrt(delta))/(2*e); sol.pb(l.point(t1));

t2 = (-f+sqrt(delta))/(2*e); sol.pb(l.point(t2));

return 2;

}//線段與圓的焦點

int getsegcircleintersection(line l, circle c, point* sol)

double segcirclearea(circle c, point a, point b) //線段切割圓

double polyciclrarea(circle c, point *p, int n)//多邊形與圓相交面積

if (cnt == 1)

if (cnt == 2)

}return fabs(ret);

}int n;

double x, y, v, ang, t, g, r;

circle c;

point p[maxn];

int main()

return 0;

}

HDU2036(多邊形面積)

解題思路 相鄰兩個座標的叉積和,最後除以2.0即求得多邊形面積。因為題目中逆時針序給出,所以輸入時逆著儲存。完整 include include include include include include include include include include include inclu...

求任意多邊形面積(凹多邊形和凸多邊形)

遇到問題 已知多邊形的各個左邊點,要求多邊形的面積 然後我搜尋了下看到這篇文章 這個人說的不多,但是簡單明瞭 首先已知各定點的座標分別為 x1,y1 x2,y2 x3,y3 xn,yn 則該多邊形的面積公式為 s 1 2 x1 y2 x2 y1 x2 y3 x3 y2 xk yk 1 xk 1 yk...

驗證多邊形是否為凸多邊形

驗證多邊形是否為凸多邊形 2108 shape of hdu include define debug 0 int crossmulti int x0,int y0,int x1,int y1,int x2,int y2 int main int n,i int f x,f y 第1個點 int s...