不妨将直线拆分成两点,然后我们以
为起始点,分别向
两点作向量
。
如下图所示,将向量记为
,将向量
记为
。
联立上面两个公式,有,然后就用一个计算点积的函数和一个计算向量的模的长度的公式即可。
double getDistance(point P, line L){
// TODO: 计算点P到直线L的距离
auto A=L.point_A;
auto B=L.point_B;
point AB=point(B.x-A.x,B.y-A.y);
point AP=point(P.x-A.x,P.y-A.y);
auto dist=[&](point a, point b)->double{
return sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2));
};
auto cross=[&](point a,point b)->double{
return (a.x*b.y-a.y*b.x);
};
return abs(cross(AB,AP)/(dist(A,B)));
}