计算几何之 点到直线的距离&点到线段的距离 代码模板与证明
创作时间:
作者:
@小白创作中心
计算几何之 点到直线的距离&点到线段的距离 代码模板与证明
引用
CSDN
1.
https://blog.csdn.net/qq_45735851/article/details/114448767
点到直线的距离
已知直线上两点a、b,和直线外一点p,求p到直线ab的距离。
代码模板:
double distance_line(Point p,Point a,Point b)
{
Vector v1 = b - a,v2 = p - a;
return fabs(cross(v1,v2) / len(v1)); //cross是v1和v2的叉积
}
证明:
这里的v1是直线上的一个向量,v2是v1同起点,指向直线外点p的向量,p到直线的距离就等于两向量的叉积除以v1的模。这里两向量的叉积就是三角形PAB的面积的两倍,就等于底乘高,然后面积除以底就是高,底就是AB就是v1的模,高就是我们要求的距离,如下图:
点到线段的距离
已知线段AB和线段外一点P,求P到线段AB的距离
代码模板:
double distance_segment(Point p,Point a,Point b)
{
if(a == b)
return len(p-a);
Vector v1 = b - a,v2 = p - a,v3 = p - b;
if(dot(v1,v2) < 0) //dot是v1和v2的点积
return len(v2);
if(dot(v1,v3) > 0)
return len(v3);
return distance_lint(p,a,b);
}
证明:
点到线段的距离和点到直线的距离有一些不一样。点到线段的距离分三种情况,P在线段AB的左边、右边和中间,如下图:
首先判断若AB是同一点的话,P到线段AB的距离就是PA的长度,否则,分如下三种情况:
热门推荐
蔓越莓饼干的制作方法
蔓越莓饼干
什么是烘焙百分比:精确配比的重要性
冬季保暖神器:羊绒衫保养秘籍
羊绒衫清洗小妙招,让你告别变形烦恼!
吊龙牛肉是哪个部位?牛身上最鲜美的部位,你要会吃
烟台春节自驾游必备指南:温暖与乐趣同行
秋日自驾:烟台最美100公里海岸线
烟台最美100公里海岸自驾游攻略:蓬莱阁到金沙滩的海滨之旅
心理咨询师揭秘:笑话背后的幽默心理学
《吐槽大会》爆梗盘点:这些瞬间笑到停不下来!
职场减压新趋势:用笑话打造欢乐办公环境
昆明长水机场空港快线全攻略:市区线路、长途专线及春运保障措施详解
昆明市区到长水机场最全交通指南!
咖啡加工技术的革新与烘焙商的角色
甘蔗的药用价值:从中医传统到现代科研新发现
甘蔗种植大揭秘:糖料蔗 vs 果蔗
新华网春节健康指南:如何保持健康生活?
济南春节亲子活动大揭秘:《三个和尚》&《疯狂物理秀》
探访山东渔灯节:传承500年的海神祭祀
春节打卡山东最美历史文化街区:百花洲&周村古商城
华硕笔记本BIOS电源管理完全指南
广东利是引领春节压岁钱新潮流
压岁钱怎么花最值?从传统到现代的理财新思路
早餐如何安排?营养师的专业建议来了
鸡屎皮(鸡内金)的功效与应用
别再披头散发了!今夏流行这4款发型,显脸小巨洋气!绝美!
职场幽默指南:如何用幽默化解尴尬
生活中的小智慧:用幽默点亮人生
哲理笑话里的生活智慧