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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top