点(x0,y0)到直线Ax+By+C=0的距离为d = (A*x0+B*y0+C)/sqrt(A^2+B^2)
化简两点式为一般式
两点式公式为(y - y1)/(x - x1) = (y2 - y1)/ (x2 - x1)
化简为一般式为(y2 - y1)x + (x1 - x2)y + (x2y1 - x1y2) = 0
/***** 点到直线的距离:P到AB的距离*****/
//P为线外一点,AB为线段两个端点
float getDist_P2L(CvPoint pointP, CvPoint pointA, CvPoint pointB)
{
//求直线方程
int A = 0, B = 0, C = 0;
A = pointA.y - pointB.y;
B = pointB.x - pointA.x;
C = pointA.x*pointB.y - pointA.y*pointB.x;
//代入点到直线距离公式
float distance = 0;
distance = ((float)abs(A*pointP.x + B*pointP.y + C)) / ((float)sqrtf(A*A + B*B));
return distance;
}