当前位置:网站首页>點到直線的距離直線的交點及夾角

點到直線的距離直線的交點及夾角

2022-07-05 22:18:00 alex1801

1、點到直線的距離

        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;
}

2、直線的交點

        利用點斜式錶達直線,然後求解兩條直線組成的方程組。

        解得:

x0 = (b2 - b1) / (k1 - k2 + 1e-4) 
y0 = k1 * x0 + b1

3、直線的夾角

        已知直線 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°的銳角,顯然夾角公式中的“角”並不都是兩直線的夾角。

原网站

版权声明
本文为[alex1801]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/186/202207052217131881.html