我得到的是矢量线(标准化矢量vx,vy某点x0,y0,形成fitLine OpenCv)和由四个点(顺时针p1,p2,p3,p4)定义的矩形。现在我需要知道,如果线穿过矩形...这意味着线上方(或左侧)需要两个点,线下方(或右侧)需要两个点。我怎么能用c ++存档呢?
答案 0 :(得分:0)
这个问题看起来像是作业;)
首先,您需要将您的线描述为等式(1),例如Ax + By = C.任何基础代数书都会告诉你如何做到这一点(或wikipedia)。
然后,您需要为矩形的每个边找到相似的方程式。让我们称之为方程式(2),(3),(4)和(5)。
然后,您需要找到(1)与其他方程的交集。让我们来点a,b,c和d。
之后,如果它位于适当的顶点之间,您需要弄清楚每个交叉点。如果是这样的话,它们会穿过一个矩形边缘!
如果你的线穿过至少一条边,你可以说你的线穿过你的矩形。
这里的挑战是能够处理与矩形相对应的直线或直接在矩形边缘之一上的直线。不要害羞让自己成为一个很好的画,以确定你在做什么。
答案 1 :(得分:0)
你的矢量方程是
y - y0 =(vy / vx)(x - x0)
要判断点(x1,y1)是否在线的上方,上方或下方,求解x1的线并将y与y1进行比较。
y > y1 - below
y == y1 - on
y < y1 - above
所以将你的矢量与矩形的每个角进行比较。