[模板]计算几何模板

1.声明

1.博主比较菜,只会二维。还只会OI常用的。

2.不要吐槽换行。

3.精度、圆周率:

1 const double eps=1E-16;
2 const double pi=acos(-1);
View Code
4.正确判相等:
1 inline bool equal(double x,double y)
2 {
3     return abs(x-y)<=eps;
4 }
View Code

2.模板

1.点类:

 1 struct pt
 2 {
 3     double x,y;
 4     pt(double a=0.double b=0)//构造函数
 5     {
 6         x=a,y=b;
 7     }
 8     void operator=(pt A)//赋值
 9     {
10         x=A.x,y=A.y;
11     }
12     pt operator+(pt A)//向量加
13     {
14         return pt(x+A.x,y+A.y);
15     }
16     pt operator-(pt A)//向量减
17     {
18         return pt(x-A.x,y-A.y);
19     }
20     pt operator*(double d)
21     {
22         return pt(x*d,y*d);
23     }
24     pt operator/(double d)
25     {
26         return pt(x/d,y/d);
27     }
28     double operator*(pt A)//叉积
29     {
30         return x*A.y-y*A.x;
31     }
32     bool operator==(pt A)//是否相等
33     {
34         return equal(x,A.x)&&equal(y,A.y);
35     }
36 };
View Code

2.点类:

1 struct line
2 {
3     pt A,B;
4     line(pt x=pt(),pt y=pt())
5     {
6         A=x,B=y;
7     }
8 };
View Code

猜你喜欢

转载自www.cnblogs.com/GreenDuck/p/10853434.html