矩形内的矢量线
Vector line inside Rectangle
我得到的是一条向量线(归一化向量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
将矢量与矩形的每个角进行比较
相关文章:
- 没有找到相关文章