Pergunta

Se eu tiver um polígono que descreve uma estrada e eu sei que a largura da estrada em todas as partes, existe um algoritmo que pode usar para determinar se um ponto está na estrada? Não estou inteiramente certo como fazer isso já que a própria linha tem uma largura de 1px.

graças,

Jeff

Foi útil?

Solução

Localizar a distância mínima do ponto para a linha (que será um vector perpendicular à linha). cálculo real, onde P0 é o primeiro ponto do segmento da estrada, v é o vetor segmento de estrada e w é o vetor de P0 até o ponto em questão. Você terá que iterar sobre cada aresta na polilinha. Se a distância é menor que a largura desse segmento, então é "on" da estrada.

d = |v x w| / |v|

Os cantos pode ser complicado, dependendo se você tratá-los como arredondada (raio constante) ou angular.

Outras dicas

Talvez você poderia tomar cada segmento de linha, construir o retângulo do segmento de linha + a sua largura, e uso retângulo / algoritmos de colisão de ponto para determinar se o retângulo contém o ponto. Um bom algoritmo irá contabilizar a largura = 1 cenário, o qual deve simplesmente tentar edificar a função inversa do segmento de linha e determina se y-1 (point.y) é um x entre line_segment.x1 e line_segment.x2

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top