一个关于检测给定的一点是否在指定的一块多边形区域中的函数 (200分)

  • 主题发起人 主题发起人 YB_unique
  • 开始时间 开始时间
Y

YB_unique

Unregistered / Unconfirmed
GUEST, unregistred user!
本来这张帖子是为了chassis开的,但担心又为论坛增加一张水贴!
所以特贴上一些微末技巧!希望大家喜欢。
不过事先声明:其中100分是归 chassis 的!
下面的代码是图象处理方面的,算是对卷兄的一种支持!不过实在是贻笑大方了!如果还好,请给点鼓励!
Thanks!

一个关于检测给定的一点是否在指定的一块多边形区域中的函数

Function PointInPolygonTest(x, y: Integer; aList: Array of TPoint): Boolean;
var
L, I, J: Integer;
function xp(aVal: Integer): Integer;
begin
Result := PPoint(@aList[aVal]).X;
end;
function yp(aVal: Integer): Integer;
begin
Result := PPoint(@aList[aVal]).Y;
end;
begin
Result := False;
L := Length(aList) ;
if L = 0 then
exit;
J := L - 1;
for I := 0 to L - 1 do
begin
if ((((yp(I) <= y) and (y < yp(J))) or ((yp(J) <= y) and (y < yp(I)))) and
(x < (xp(J) - xp(I)) * (y - yp(I)) / (yp(J) - yp(I)) + xp(I))) then
Result := not Result;
J := I;
end;
end;
 
区区小事,何足挂齿阿,只要能给您一点帮助就是我的荣幸。等我把那一百分给你了。
对了,你怎么能对我在线发信息呢,这是个什么功能阿。isedai@163.com
 
呵呵,多谢老弟的灌溉;
反正偶总是用 PtInRegion 来判断的~~~
 
多人接受答案了。
 
收藏,好东西。
 
后退
顶部