es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo calcular las coordenadas en una polilínea perpendicular a un punto (en 3D)?

Tengo dos polilíneas aproximadamente paralelas que representan vías de tren, compuestas por cientos (o quizás miles) de coordenadas x, y, z. Las dos líneas permanecen aproximadamente a 1.435m de distancia, pero se curvan y doblan como lo haría una vía de tren.

Si elijo un punto en una de las polilíneas, ¿cómo encuentro el punto que es perpendicular en la otra polilínea paralela?

Esto sería similar a usar un ajuste perpendicular en un programa CAD (se muestra aquí utilizando FreeCAD).

Supongo que los programas CAD utilizan el producto cruzado para encontrar la distancia / punto y eligen la línea a la que ajustarse en función de dónde esté el mouse.

Me gustaría lograr lo mismo, pero sin situar el mouse sobre la línea.

¿Hay alguna manera de calcular simplemente el segmento de línea más cercano en la línea paralela? ¿O de ver qué segmento de la polilínea atraviesa un plano perpendicular en el punto seleccionado?

No es práctico recorrer los segmentos uno por uno debido a que hay tantos de ellos.

En Python, la entrada sería algo así como el punto x, y, z en rail1 y buscaría obtener el punto x, y, z en rail2.

Muchas gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Encontrar el punto perpendicular en una polilínea paralela

    Para encontrar el punto en la otra polilínea paralela que es perpendicular a un punto dado en una polilínea, se pueden seguir los siguientes pasos:

    1. Determinar el segmento en la misma polilínea al que el punto dado está más cercano. Esto se puede hacer calculando la distancia entre el punto dado y cada segmento de la polilínea y seleccionando el segmento con la distancia mínima.
    2. Encontrar el punto más cercano en la otra polilínea al punto medio del segmento determinado en el paso 1. Esto se puede hacer calculando la distancia entre el punto medio y cada segmento de la otra polilínea y seleccionando el segmento con la distancia mínima. El punto más cercano en este segmento al punto medio será el punto en la otra polilínea que es perpendicular al punto dado.

    3. Si se desea, se puede calcular la distancia entre el punto dado y el punto perpendicular utilizando el teorema de Pitágoras.

    En Python, este proceso se puede implementar utilizando una combinación de matemática vectorial, algoritmos de geometría y recorriendo los segmentos de las polilíneas. Sin embargo, debido a que hay muchos segmentos, esto puede resultar computacionalmente costoso. Una optimización podría ser utilizar una estructura de datos de indexación espacial, como un quadtree, para eliminar rápidamente los segmentos que no están lo suficientemente cerca del punto dado.

Comments are closed.