矩形内的矢量线

Vector line inside Rectangle

本文关键字:      更新时间:2023-10-16

我得到的是一条向量线(归一化向量vx,经过某个点x0,y0,形式fitLine OpenCv)和一个由四个点定义的矩形(顺时针方向p1,p2,p3,p4)。现在我需要知道,如果直线穿过矩形。这就意味着直线的上方(或左边)和下方(或右边)需要有两个点。我如何在c++中存档它?

这个问题看起来像作业;)

首先,您需要将您的直线描述为等式(1),例如Ax+By=C。任何基础代数书都会告诉你怎么做(或者维基百科)。

然后,你需要为你的矩形的每条边找到相似的方程。我们称这些方程为(2)、(3)、(4)和(5)。

然后,你需要找到(1)与其他方程的交点。我们称这些点为a, b,c和d。

之后,您将需要计算出每个交点是否位于适当的顶点之间。如果是这样的话,它们会穿过一个矩形的边缘!

如果你的直线与至少一条边相交,你可以说你的直线与你的矩形相交。

这里的挑战是能够处理与矩形平行或直接在矩形边缘上的一条线。不要羞于给自己画一幅漂亮的画,以确定你在做什么。

你的向量的方程是

y - y0 = (vy/vx) (x - x0)

要判断点(x1,y1)是在直线的上方、上方还是下方,只需求解直线上的x1,并将y与y1进行比较。

 y > y1 - below
 y == y1 - on 
 y < y1 - above

将矢量与矩形的每个角进行比较

相关文章:
  • 没有找到相关文章