f
a
b
s
(
a
−
b
)
<
e
p
s
fabs(a-b) < eps
fabs(a−b)<eps
a
!
=
b
a != b
a!=b
f
a
b
s
(
a
−
b
)
>
e
p
s
fabs(a-b) > eps
fabs(a−b)>eps
a
<
b
a < b
a<b
a
−
b
<
−
e
p
s
a - b < -eps
a−b<−eps
a
<
=
b
a <= b
a<=b
a
−
b
<
e
p
s
a - b < eps
a−b<eps
a
>
b
a > b
a>b
a
−
b
>
e
p
s
a - b > eps
a−b>eps
a
>
=
b
a >= b
a>=b
a
−
b
>
−
e
p
s
a - b > -eps
a−b>−eps
struct point {
double x, y;
friend point operator - (point a, point b) {
point tmp;
tmp.x = a.x - b.x;
tmp.y = a.y - b.y;
return tmp;
}
};
point get_pc(point p1, point p2, point p3) { // 求圆心
double a, b, c, d, e, f, r; point p;
a = 2*(p2.x-p1.x); b = 2*(p2.y-p1.y);
c = p2.x*p2.x + p2.y*p2.y - p1.x*p1.x - p1.y*p1.y;
d = 2*(p3.x-p2.x); e = 2*(p3.y-p2.y);
f = p3.x*p3.x + p3.y*p3.y - p2.x*p2.x - p2.y*p2.y;
p.x = (b*f-e*c) / (b*d-e*a); p.y = (d*c-a*f) / (b*d-e*a);
r = sqrt((p.x-p1.x)*(p.x-p1.x) + (p.y-p1.y)*(p.y-p1.y)); // 半径
return p;
}
double getdis(point a, point b) { // 两点距离
return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));
}
double gets1(point a, point b, point c) { // 叉积求面积
return fabs((b.x-a.x)*(c.y-a.y) - (b.y-a.y)*(c.x-a.x))/2.0;
}
double gets2(double a, double b, double c) { // 三边求面积
double p = (a + b + c) / 2.0;
return sqrt(p * (p-a) * (p-b) * (p-c));
}