![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Находится ли точка в полигоне 2D?
Moroz4 © (2008-04-22 15:16:00)как узнать находится ли точка в полигоне 2D?
DVM (2008-04-22 15:42:00) [1]
function PtInPolygon(const Points: TPoints; P: TPoint): Boolean;
var
Cnt, I, J: Integer;
begin
Result := False;
Cnt := Length(Points);
J := Cnt - 1;
for I := 0 to Cnt - 1 do
begin
if ((Points[I].y <= P.y) and (P.y < Points[J].y)) or
((Points[J].y <= P.y) and (P.y < Points[I].y)) then
begin
if (P.x < (Points[J].x - Points[I].x) * (P.y - Points[I].y) /
(Points[J].y - Points[I].y) + Points[I].x) then
Result := not Result;
end;
J := I;
end;
end;
MBo (2008-04-22 15:38:00) [2]http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/
http://tog.acm.org/editors/erich/ptinpoly/
http://en.wikipedia.org/wiki/Point_in_polygon
DVM (2008-04-22 15:27:00) [3]PtInRegion + CreatePolygonRgn