汇总篇:计算几何汇总
首先,求出圆心O在直线AB上的投影点E
然后求出AB的方向向量e=AB/|AB|
令EC=ED=base
base = sqrt(r^2-OE^2)
EC = -base *e
ED = base*e
C=E+EC
D=E+ED
相切时求得的C=D,CDE重合
如果A为切点,那么ACDE重合
#include<cmath>
const int eps = 1e-2;//精度
double myRound(double a){//因为小数有误差,所以判断相切时要精确到固定位数
return floor(a * 100 + 0.5) / 100; /*保留小数点后2位*/
}
class point{
public:
double x;
double y;
point(double x_=0,double y_=0){
x=x_;
y=y_;
}
void set(point p){
x=p.x;
y=p.y;
}
friend const point operator+(con