如何检查点是否在直线下方?
我有以下数据:

Line [ {x1,y1}, {x2,y2} ]
Points {xA,yA}, {xB,yB} ...

我需要用python编写一个小算法来检测行的一边和另一边的点。
谢谢

最佳答案

您可以尝试使用一个叉积——http://en.wikipedia.org/wiki/Cross_product

v1 = {x2-x1, y2-y1}   # Vector 1
v2 = {x2-xA, y2-yA}   # Vector 1
xp = v1.x*v2.y - v1.y*v2.x  # Cross product
if xp > 0:
    print 'on one side'
elif xp < 0:
    print 'on the other'
else:
    print 'on the same line!'

你需要校准每一面是什么。如果您希望它是“低于”或“高于”,您需要确保行上的点是水平排序的。
我还没有测试过这个。
编辑我最初输入的点积公式。o
幸运的是,我找到了Calculating a 2D Vector's Cross Product

关于python - 如何检查点是否在线下?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3838319/

10-11 04:51