题解 | #点到直线距离#
点到直线距离
https://www.nowcoder.com/practice/1bcdd78060e54812a9c47ebe40c6af65
不妨将直线拆分成两点,然后我们以
为起始点,分别向
两点作向量
。
如下图所示,将向量记为
,将向量
记为
。
联立上面两个公式,有,然后就用一个计算点积的函数和一个计算向量的模的长度的公式即可。
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)));
}



查看16道真题和解析