计算几何之 点到直线的距离&点到线段的距离 代码模板与证明
创作时间:
作者:
@小白创作中心
计算几何之 点到直线的距离&点到线段的距离 代码模板与证明
引用
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的长度,否则,分如下三种情况:
热门推荐
老手艺暖了冬季丨“口红”是来自古代的胭脂
郁喆隽 | 内在的巴别塔:马克斯·韦伯的“价值领域”概念及其当代解读(上)
黄金是危机时期的避风港
柱镜-0.50散光是什么意思
新一代载人登月火箭迎重大节点!航天专家详解长征十号
安徽十六大名茶:从黄山毛峰到祁门红茶,品味徽州茶韵
四川公标律所深度剖析行人闯红灯事故中的赔偿争议
寒假斗“痘”计——从“痘”你玩,到“痘”你完
安神补脑液的副作用有哪些
深度揭秘!手术治疗阿尔茨海默会是人类攻克痴呆的新希望吗?
安卓15新功能上线!保护隐私,但这项功能可能会让你很受挫
革命性低空航线正式开通:武汉至十堰仅需一个半小时!
百家号发布前思考:明确目标受众
封闭阳台的建筑面积计算方法及材料选择
裁员补偿金如何申诉
晨跑:开启心脑血管健康的活力密码
殷夫人说的经典台词
全球有37个发达国家,4个发达经济体,名单在这里
4条高铁涨价背后:近年高铁调过几次价?票价究竟如何定?
揭秘痤疮成因:内源性与外源性因素全解析
家庭装修电视与投影仪如何选择
揭阳最新房价公布:11月新房均价7364元/㎡,与上月持平
禄神在八字中代表什么意思 八字禄神是什么意思
从压力到动力:运动心理学教你如何管理赛前焦虑
指甲周围干燥死皮怎么办
Excel中按姓名首字母排序的多种方法
老鼠吃了鼠药会有什么反应,多久才会死去?
解读社区矫正:四类罪犯的特殊改造之路,非监禁刑罚是如何助罪犯回归社会?
他用摄影批判社会,英国彩色纪实先驱马丁·帕尔
如何选择合适的粉底液