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;
- }
利用点斜式表达直线,然后求解两条直线组成的方程组。

解得:
- x0 = (b2 - b1) / (k1 - k2 + 1e-4)
- y0 = k1 * x0 + b1
已知直线 l1:y=k1x+b1,l2:y=k2x+b2,求这两条直线的夹角。
结论:
l1 到 l2 的转向角为 θ,则 tanθ=(k2- k1)/(1+ k1*k2)
l1 与 l2 的夹角为 θ,则 tanθ=∣(k2- k1)/(1+ k1*k2)∣
注意:两直线的夹角指的是两直线所成的小于90°的锐角,显然夹角公式中的“角”并不都是两直线的夹角。