计算几何之 点到直线的距离&点到线段的距离 代码模板与证明
创作时间:
作者:
@小白创作中心
计算几何之 点到直线的距离&点到线段的距离 代码模板与证明
引用
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的长度,否则,分如下三种情况:
热门推荐
外酥内嫩,一学就会——脆皮豆腐的家常秘制法
酸枣仁与远志:失眠救星?
黄连阿胶汤:失眠患者的中医良方
酸枣仁和胡椒碱:你的天然安眠药
双十一熬夜必备:黄精、酸枣仁助你一夜好眠
朱砂安神丸:中医助眠经典,安全使用是关键
赵本山春晚经典回顾:从《卖拐》到全球巡演
赵本山新作《乡村爱情17》开播,王大拿从首富到保安!
中部战区:联战联保 构建一体化综合保障体系
注意!酒驾“新国标”实施,12类“涉酒”药开车别碰!
小年夜必备:自制传统花生糖教程
徐集花生糖:非遗文化的甜蜜传承
秋冬养生神器:自制花生糖
自制网红花生糖:传统美味遇上创意新潮
18个细节提升你的饭局社交魅力
金融行业业务招待费管理:预算制定与成本控制全攻略
一顿饭改变职场命运?高情商请客攻略来了!
桂剧彩调:广西非遗文化的璀璨明珠
牛肉馅配什么菜好吃,牛肉饺子馅的做法
揭秘史前巨兽:青少年科技素养提升计划之马门溪龙探秘
揭秘合川马门溪龙:东方巨龙的神秘面纱
揭秘合川马门溪龙:长颈霸主的生活奥秘
婚介服务套路深 “适婚族”小心啦!
新春走基层|谁说年味淡了?保山这个乡村集市年味太浓啦!
奥希替尼联合化疗治疗脑转移:疗效与毒性的权衡
阳朔西街:千年古建里的中西合璧之美
阳朔西街:穿越古今的美食与风情
阳朔西街:中西文化交融的秘密
阳朔西街:打卡网红景点,你去过几个?
铅笔选择指南!