python判断点在直线的哪一侧_Python:确定点是否位于多边形的边界上

本文介绍了一种Python方法来判断一个点是否位于两条相邻直线构成的多边形边界上。通过计算向量点积和距离,可以确定点是否在直线上,并给出了具体的实现代码。
摘要由CSDN通过智能技术生成

对于每对相邻顶点A、B:构造一个从a到B的向量,称之为p

现在构造一个从a到测试点X的向量,称之为q

向量对的点积公式是p.q=| p | | q | cosC

其中C是向量之间的角度。

所以如果p.q/| p | | q |==1,那么点AX和AB是共线的。在电脑上工作时,你需要1-p.q/| p | | | | | | | | | | | | | | | | | | | |。

还需要检查| q |<| p |(即X比B更接近A)

如果4&5是真的,你的观点就在边界上。在

编辑

另一种我认为我看到的方法是取你的测试点X,在X上画一条线,垂直于a和B之间的线。找出这条线和a->B相交的地方。求出从X到这个交叉点的距离,如果这个距离足够小,你就认为这个点在直线上。在

编辑——有趣的小练习!在

发布了一些代码,由于我错误地记住了一些数学。

在回家的火车上在Pythonista玩了一场,然后想出了一个基本上可行的方法。因为在iPad上编辑帖子很痛苦,所以把数学证明放在一边了!在

没有做太多的测试,没有测试除以零等,警告用户。在# we determine the point of intersection X between

# the line between A and B and a line through T

# that is perpendicular to the line AB (can't draw perpendicular

# in ascii, you'll have to i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值