DELPHI点在多边形内算法

DELPHI点在多边形内算法——判断一个点是否在一个复杂多边形的内部

//多边形数组

duoX:Array of TPoint;

//判断函数
function gPointIn(p :TPoint) :Boolean;
var i,j:Integer;
    p1,p2:TPoint;
begin
Result := False;
if(High(duoX) < 2) then Exit;

j := High(duoX);
for i := Low(duoX) to High(duoX) do
  begin
     p1 := duoX[i];
     p2 := duoX[j];

     if(p1.y < p.y) and (p2.y >= p.y) or (p2.y < p.y) and (p1.y >= p.y) then
        if (p1.x + (p.y - p1.y) / (p2.y - p1.y) * (p2.x - p1.x) < p.x) then
           Result := not Result;
     j := i;
  end;
end;

 


//调用栗子

if gPointIn(Point(X,Y)) then CheckBox1.Caption := '内' else CheckBox1.Caption := '外';
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值