Determinare se un punto è sulla buona strada
-
19-09-2019 - |
Domanda
Se ho una polilinea che descrive una strada e so che la larghezza della strada a tutte le parti, c'è un algoritmo che posso utilizzare per determinare se un punto è sulla strada? Io non sono del tutto sicuro di come fare questo dal momento che la linea stessa ha una larghezza di 1px.
grazie,
Jeff
Soluzione
trovare la distanza minima del punto alla linea (sarà un vettore perpendicolare alla linea). calcolo effettivo dove P0 è il primo punto del tratto di strada, v è il vettore segmento di strada e w è il vettore da P0 fino al punto in questione. Si dovrà iterare su ogni bordo della polilinea. Se la distanza è inferiore alla larghezza di quel segmento, allora è "on" la strada.
d = |v x w| / |v|
Gli angoli possono essere difficile a seconda se trattate come arrotondati (raggio costante) o angolare.
Altri suggerimenti
Forse si potrebbe prendere ogni segmento di linea, costruire il rettangolo del segmento di linea + la sua larghezza, e utilizzare rettangolo algoritmi di collisione / punto per determinare se il rettangolo contiene il punto. Un buon algoritmo rappresentano la larghezza = 1 scenario, che dovrebbe semplicemente cercare di costruire la funzione inversa del segmento e determinare se y-1 (punto.Ý) è un x tra line_segment.x1 e line_segment.x2