如何检查点是否在直线下方?
我有以下数据:
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/