2009-08-24 12 views
3

Si j'ai une 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 le faire puisque la ligne elle-même a une largeur de 1px.Déterminer si un point est sur une route

grâce,

Jeff

+0

Merci à tous pour les réponses rapides. Cela ressemblait à l'approche que j'allais prendre, mais je voulais vérifier s'il y avait quelque chose que je faisais de façon incorrecte. Vos réponses sont très utiles. –

Répondre

2

Trouver la distance minimale du point à la ligne (il 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, il est "sur" la route.

d = |v x w|/|v| 

Les coins peuvent être difficiles si vous les traitez comme arrondis (rayon constant) ou angulaires.

2

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

Questions connexes