Comment faire pour vérifier si le point X,Y est à l'intérieur d'un polygone.
Point dans le polygone
Apparemment, cette solution implique de vérifier combien de fois vous croix
une ligne pour passer du point X,Y de la bordure extérieure de l'écran.
honnêtement, je n'ai jamais essayé de lire le code correctement pour essayer de
comprendre le concept, je sais juste qu'il semble fonctionner !
fonction de PtInPoly(const Points: Tableau de TPoint X,Y: Integer): Boolean
var
& nbsp & nbsp Comte,
& nbsp & nbsp I,
& nbsp & nbsp J : Integer
begin
& nbsp & nbsp Result := False
& nbsp & nbsp Count := Longueur(Points)
& nbsp & nbsp J := Count-1
& nbsp & nbsp for I := 0 to Count-1 do begin
& ! & ! & ! & nbsp si ((Points[I].Y <=Y) et (Y < Points[J].Y)) ou
& ! & ! & ! & ! & ! & ! & nbsp ((Points[J].Y <=Y) et (Y < Points[I].Y))
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp si (x < (Points[j].X - Points[i].X) * (y - Points[i].Y) /
& ! & ! & ! & ! & ! & ! & ! & nbsp (Points[j].Y - Points[i].Y) Points[i].X)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Résultat := pas de Résultat
& ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp J := I
& nbsp & nbsp fin
fin
Point au polygone ?
Point au polygone ? : Plusieurs milliers de conseils pour vous faciliter la vie.
Comment faire pour verifier si le point X,Y est a l'interieur d'un polygone.
Point dans le polygone
Apparemment, cette solution implique de verifier combien de fois vous croix
une ligne pour passer du point X,Y de la bordure exterieure de l'ecran.
honnetement, je n'ai jamais essaye de lire le code correctement pour essayer de
comprendre le concept, je sais juste qu'il semble fonctionner !
fonction de PtInPoly(const Points: Tableau de TPoint X,Y: Integer): Boolean
var
& nbsp & nbsp Comte,
& nbsp & nbsp I,
& nbsp & nbsp J : Integer
begin
& nbsp & nbsp Result := False
& nbsp & nbsp Count := Longueur(Points)
& nbsp & nbsp J := Count-1
& nbsp & nbsp for I := 0 to Count-1 do begin
& ! & ! & ! & nbsp si ((Points[I].Y <=Y) et (Y < Points[J].Y)) ou
& ! & ! & ! & ! & ! & ! & nbsp ((Points[J].Y <=Y) et (Y < Points[I].Y))
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp si (x < (Points[j].X - Points[i].X) * (y - Points[i].Y) /
& ! & ! & ! & ! & ! & ! & ! & nbsp (Points[j].Y - Points[i].Y) Points[i].X)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Resultat := pas de Resultat
& ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp J := I
& nbsp & nbsp fin
fin