题解 | #点到直线距离#

点到直线距离

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)));
}
全部评论
这么牛
2 回复 分享
发布于 09-23 19:33 辽宁
方法很好,不过这里应该是点积,不是叉积
1 回复 分享
发布于 09-28 17:54 辽宁
sin,cos分不清 那不就是面积除边长吗
点赞 回复 分享
发布于 10-30 19:06 山西
太牛了
点赞 回复 分享
发布于 09-25 20:18 北京
软人解法
点赞 回复 分享
发布于 09-24 16:05 辽宁

相关推荐

ResourceUt...:楼主有自己的垃圾箱,公司也有自己的人才库
点赞 评论 收藏
分享
瑞雪兆丰年_:可以贴个超级大的校徽,以防HR眼拙
点赞 评论 收藏
分享
评论
5
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务