如何求图像中两直线交点的坐标

如何求图像中两直线交点的坐标,第1张

第一步:搜索图象上的任意三个坐标不同的白色点.

可能出现2种情况:

1.有两个点横坐标相同,这个相同的坐标就是交点的横坐标.

2.有两个点

纵坐标

相同,这个相同的坐标就是交点的纵坐标.

得到交点的横或纵坐标.

第二步:再次搜索任意三个点:

还有两种情况:

1.有两个点横坐标相同

a.如果第一步已经知道型胡交点的纵坐标,这个相同的坐标就是交点的横坐标.退出第二灶腊步.

b.如果第一步已经知道隐租滑交点的横坐标,则回到第二步重新开始搜索.

2.有两个点纵坐标相同

a.如果第一步已经知道交电的横坐标,这个相同的坐标就是交点的纵坐标.退出第二步.

b.如果第一步已经知道交点的纵坐标,则回到第二步重新开始搜索.

越来越大手发现自己数学之差了,连简单的数学运算忘记了,,写下实现点到直困宏线交点坐标的计算方法

原理是两点确定一条直线,利用公式 y = ax+b 去计算

然后根据与直线方程Ax+By+C=0(A≠0,B≠0)垂直的直线方程是Bx-Ay+m = 0, (m是参变量)的原理求出垂线方程的m值,然后根据两个直线方程求出交点坐标。

其中pt1和pt2为已知的两个在直线上的点,pt3为垂线上的点坐标ptCross为获取的交点坐标

[cpp] view plaincopyprint?

/** @ brief 根据两点求出垂线过第三点的直线的交点

@ param pt1 直线上的第一个点

@ param pt2 直线上的第二个点

@ param pt3 垂线上的点

@ return 返回点到直线的垂直交点坐标

*/

QPointF test(const QPointF &pt1, const QPointF &pt2, const QPointF &pt3)

{

qreal A = (pt1.y()-pt2.y())/(pt1.x()- pt2.x())

qreal B = (pt1.y()-A*pt1.y())

/// >0 = ax +b -y 对应垂线方程为 -x -ay + m = 0(mm为系数)

/// >A = aB = b

qreal m = pt3.x() + A*pt3.y()

/// 求两直线交点坐标

QPointF ptCross

ptCross.setX((m-A*B)/(A*A + 1))

ptCross.setY(A*ptCross.x()+B)

return ptCross

}

/** @ brief 根据两点求出垂线过第三点的直线的交汪仿册点

@ param pt1 直线上的第一个点

@ param pt2 直线上的第二个点

@ param pt3 垂线上的点

@ return 返回点到直线的垂直交点坐标

*/

QPointF test(const QPointF &pt1, const QPointF &pt2, const QPointF &pt3)

{

qreal A = (pt1.y()-pt2.y())/(pt1.x()- pt2.x())

qreal B = (pt1.y()-A*pt1.y())

/// >0 = ax +b -y 对应垂线方程为 -x -ay + m = 0(mm为系数)

/// >A = aB = b

qreal m = pt3.x() + A*pt3.y()

/// 求两直线交点坐标

QPointF ptCross

ptCross.setX((m-A*B)/(A*A + 1))

ptCross.setY(A*ptCross.x()+B)

return ptCross

}

点到直线距离为,使用公式,(点p0(x0, y0),直线L公式为)

[cpp] view plaincopyprint?

qreal test2(const QPointF &pt1, const QPointF &pt2, const QPointF &pt3)

{

qreal A = (pt1.y()-pt2.y())/(pt1.x()- pt2.x())

qreal B = (pt1.y()-A*pt1.y())

/// >0 = ax +b -y

return qAbs(A*pt3.x() + B -pt3.y())/sqrt(A*A + 1)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12449485.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存