@TOC
使用背景
笔者在求解点和直线匹配问题中遇到了,无法使用点到直线距离的情况.
直线的和线段的本质区别就在与直线是无限延伸的,所以你的点总可以找到一个垂足做出距离,但是对于线段来说是当线在直线外时会存在三种情况,接下来一次介绍.
原理简介
由图简单可知一共三种情况,第一种距离为点到直线的距离,后面两种分别是AP和BP和长度,使用向量知识的知识可以进行具体的推导,这里不再细说,有兴趣的同学可以自己查阅,这里直接贴上可用完整函数代码,经过多次测验,代码由c++写成,使用了opencv库中的点Point2d.
实现代码
/*
求点到线段的距离
使用方法 distance (P ,A ,B) P为待测点,AB为线段起始点
*/
double distance(Point2d P,Point2d A,Point2d B)
{
//计算r |AB| |AP| |BP| |PC|
double ab = sqrt(pow((B.x-A.x),2) +pow(</