2011-11-30 95 views
0

我得到的是一个向量线(归一化向量vx,vy某点x0,y0,形式fitLine OpenCv)和一个由四个点(顺时针p1,p2,p3,p4)定义的矩形。现在我需要知道,如果线正在通过矩形..这意味着需要在线上方(或从线)两点以及线下方(或右方)两点。我怎样才能存档这在c + +?矩形内的向量线

+0

你怎么能排除只有一个点是在一个给定的一边,另一边是三个? – Thomas

回答

0

这个问题看起来像功课;)

首先,您需要将您的discribe线方程(1)如AX + = C。任何基本的代数书会告诉你如何做到这一点(或wikipedia)。

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

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

之后,您需要找出每个交点,如果它位于适当的顶点之间。如果是这种情况,他们穿过矩形边缘!

如果您的线条至少有一条边线穿过,则可以说您的线条穿过了您的矩形。

这里的挑战是能够处理与矩形边缘相同的直线或直接位于矩形边缘上的直线。不要害羞地让自己成为一个很好的绘画,以确定你在做什么。

0

你的载体的方程是

Ŷ - Y0 =(VY/VX)(X - X 0)

告诉是否点(X1,Y1)的正上方,或在该行下面,解出x1的行并将y与y1进行比较。

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

因此,比较你的向量矩形的每个角落。