假设你有一个二维平面,上面有两个点(称为a、N1和N2)
N1=[9*H//8,0] N2=[9*H//8,W]
如何检查我的第三个点P= (int(x1), int(y1))
是否与穿过N1和N2的线相交?(请注意,p点或第三点可能在飞机上的任何位置移动,我只知道它何时在线)
那么让我们说
我能想到的是:
N1 = np.array([9 * H // 8, 0])
N2 = np.array([9 * H // 8, W]);
p_aftertop = (int(x1), int(y1))
v1 = (0,W ) # Vector 1
v2 = (9 * H // 8 - int(x1), W- int(y1)) # Vector 1
xp = v1[0] * v2[1] - v1[1] * v2[0] # Cross product
if (xp != 0):
status = cv2.imwrite('/img' + str(i) + '.jpg', frame)
print('on the line')
i +=1
我不知道为什么我的方法不管用。 我如何知道这一点何时在与这两个点相交的线上
如果该点满足以下条件,则该点位于直线内:
1.p1与直线端点的坡度应相等。(且方向相反)
2.点p1应位于直线端点的x或y坐标边界内
伪代码
其中N1x是N1的x坐标
请注意slope of the line是要在两点之间计算的数学函数
你的方法很好,但需要小的修正
相关问题 更多 >
编程相关推荐