python平行四边形函数_在Python中,如何确定一个点是否在某个平行四边形内?

以下解决方案使用为平行四边形优化的象限漫游算法。它是绕组数算法的一个导数。在

该算法将测试点p放在一个坐标系的中心,并按顺序遍历多边形的顶点,检查“正负轴交叉”。如果轴的交叉数是4的倍数(但不是0),则P在多边形内。直觉上P在多边形内部,如果顶点“穿过所有四个半轴”。因此是4的倍数。在

该算法可以高度优化(特别适合汇编程序实现),并且运行速度快。在

这是在Delphi中,使用与MBo的答案中给出的函数ptinpgm相同的参数顺序function PtInPlgm2( bx, by, ax, ay, cx, cy, px, py: double ): boolean;

var

Sum : integer;

dx, dy : double;

begin

Sum := 0;

dx := cx - bx + ax;

dy := cy - by + ay;

if ( px < ax ) <> ( px < bx ) then inc( Sum );

if ( py < ay ) <> ( py < by ) then inc( Sum );

if ( px < bx ) <> ( px < cx ) then inc( Sum );

if ( py < by ) <> ( py < cy ) then inc( Sum );

if ( px < cx ) <> ( px < dx ) then inc( Sum );

if ( py < cy ) <> ( py < dy ) then inc( Sum );

if ( px < dx ) <> ( px < ax ) then inc( Sum );

if ( py < dy ) <> ( py < ay ) then inc( Sum );

Result := (Sum mod 4 = 0) AND (Sum <> 0);

end;

我相信没关系,我没有提供Python实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值