pair<double,double> jd (double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4) {
if (x1==x2&&y1==y2) return make_pair(1e18,1e18);
//(x1,y1),(x2,y2)组成的直线和(x3,y3),(x4,y4)组成的直线的交点
double k1=(x1==x2?1e18:(y1-y2)/(x1-x2));
double k2=(y1==y2?1e18:(y3-y4)/(x3-x4));
if (sgn(k1-k2)==0) return make_pair(1e18,1e18);
//k1是1e18,k2不是,答案就是x1*k2+b2
if (k1==1e18) {
return make_pair(x1,x1*k2+y3-k2*x3);
}
else if (k2==1e18) {
return make_pair(x2,x2*k1+y1-k1*x1);
}
double b1=y1-k1*x1;
double b2=y3-k2*x3;
double x=(b2-b1)/(k1-k2);
double y=k1*x+b1;
return make_pair(x,y);
}
【模板】——直线与直线的交点
最新推荐文章于 2022-03-27 14:58:13 发布