Question

Si j'ai un polyligne qui décrit une route et je sais que la largeur de la route à toutes les parties, est-il un algorithme que je peux utiliser pour déterminer si un point est sur la route? Je ne suis pas entièrement sûr de savoir comment faire cela depuis la ligne elle-même a une largeur de 1px.

merci,

Jeff

Était-ce utile?

La solution

Trouver la distance minimale du point à la ligne (ce sera un vecteur perpendiculaire à la ligne). calcul réel où P0 est le premier point du segment de route, v est le vecteur de segment de route et w est le vecteur de P0 au point en question. Vous devrez itérer sur chaque bord de la polyligne. Si la distance est inférieure à la largeur de ce segment, alors il est « sur » la route.

d = |v x w| / |v|

Les coins peuvent être délicat en fonction de si on les traite comme (rayon constant) arrondies ou angulaires.

Autres conseils

Peut-être que vous pourriez prendre chaque segment de ligne, construire le rectangle du segment de ligne + sa largeur, et utiliser des algorithmes de collision rectangle / points pour déterminer si le rectangle contient le point. Un bon algorithme va tenir compte de la largeur = 1 scénario, qui doit simplement tenter de construire la fonction inverse du segment de ligne et de déterminer si y-1 (point.y) est un x compris entre line_segment.x1 et line_segment.x2

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top