Puntos de intersección de segmentos de línea en un plano

Pregunta: En el sistema de coordenadas del plano, dados dos segmentos de línea y se conocen las coordenadas de los extremos de los dos segmentos de línea, determine si los dos segmentos de línea se intersecan. Si se intersecan, encuentra las coordenadas del punto de intersección.

Primero, enumeramos todos los escenarios cuando dos segmentos de línea se cruzan, como se muestra en la siguiente figura:

 Hay 8 escenarios en total.

Si analizamos estos escenarios detenidamente, encontraremos que los escenarios 5, 6, 7 y 8 tienen una característica común: hay una coincidencia de extremos de segmento de línea, mientras que los cuatro escenarios restantes no existen.

En el caso de puntos finales superpuestos

Primero analicemos el escenario con puntos finales superpuestos. 

Cuando se encuentra que un punto final se superpone, juzgamos si los puntos finales restantes también son iguales.

Si el otro extremo también es igual, se considera el séptimo escenario , es decir, los dos segmentos de línea son el mismo segmento de línea y se superponen por completo;

Si los otros puntos finales no son iguales, conectamos los dos puntos desiguales en un vector (en las escenas 5, 6 y 8 de la figura a continuación, significa que los puntos A y C están conectados en un vector, por supuesto, lo mismo es cierto para conectar en un \overrightarrow{AC}vector\overrightarrow{CA}

 Luego, \overrightarrow{AC}multiplicamos en cruz el vector con cualquiera de los vectores de segmento de línea originales

Si el resultado del producto cruzado no es 0, significa que el nuevo vector \overrightarrow{AC}no es paralelo al segmento de línea utilizado para el producto cruzado, por lo que se puede inferir que es el quinto escenario .

 Si el resultado del producto vectorial es 0, significa que el nuevo vector \overrightarrow{AC}es paralelo al segmento de línea del producto vectorial, es decir, ingrese los casos sexto y octavo.

En este punto, usamos la multiplicación de puntos para juzgar si los dos puntos restantes están del mismo lado del punto de coincidencia (es decir, si los puntos A y C en la figura están del mismo lado del punto de coincidencia). Toma el punto coincidente como la cola del vector, es decir, la composición del vector \overrightarrow{BA}y el vector \overrightarrow{BC}(se le puede llamar vector \overrightarrow{CC}, porque el punto B y el punto D coinciden) para la multiplicación de puntos.

Si el producto interno es mayor que 0, es el mismo lado, es decir, el octavo escenario ; si el producto interno es menor que 0, ese es el sexto escenario .

Casos en los que no hay superposición de puntos finales

Después de analizar la situación en la que hay superposición de puntos finales, analicemos el escenario en el que no hay superposición de puntos finales.

 Primero tomamos uno de los dos segmentos de línea como el vector de cálculo básico. Suponiendo que el segmento de línea AB se toma como el vector de cálculo básico \overrightarrow{AB}, determinamos secuencialmente si los dos extremos en otro segmento de línea son colineales con el segmento de línea AB por medio de la multiplicación cruzada, como

\overrightarrow{AB}\veces \overrightarrow{AC}\overrightarrow{AC}(Los vectores también se pueden usar en la fórmula \overrightarrow{BC}),

Si el producto exterior es igual a 0, significa que el punto C es colineal con el segmento AB;

Si el producto exterior no es igual a 0, significa que el punto C no es colineal con el segmento AB.

De la misma manera, \overrightarrow{AB}\times \overrightarrow{AD}(el vector en la fórmula \overrightarrow{AD}también puede ser un vector \overrightarrow{BD}) es el mismo, puedes averiguar si el punto D es colineal con el segmento de línea AB.

De la misma manera, elegimos otro segmento de línea como vector de cálculo básico \overrightarrow{CD}y ejecutamos el proceso anterior nuevamente, podemos conocer la posición relativa del punto A y el punto B y el segmento de línea CD

Combinando los resultados de los dos cálculos, podemos conocer la posición relativa entre los dos segmentos de línea.

\overrightarrow{AB}Al calcular vectores basados ​​en vectores , podemos conocer las posiciones de los puntos C y D en relación con el segmento de línea AB;

\overrightarrow{CD}Al calcular vectores basados ​​en vectores , podemos conocer las posiciones de los puntos A y B en relación con el segmento de línea CD;

Las condiciones necesarias y suficientes para el primer escenario son:

El segmento de línea AB interseca la línea donde se ubica CD, es decir, el punto A y el punto B están respectivamente a ambos lados de la línea CD;

Además, el segmento de recta CD interseca a la recta AB, es decir, el punto C y el punto D están a ambos lados de la recta AB;

El segundo escenario es que solo hay un punto colineal con otro segmento de línea, entonces solo necesitamos juzgar si el rango de coordenadas del punto colineal está dentro del rango de coordenadas de los dos puntos finales del segmento de línea, y si es así, la intersección punto es este punto de línea colineal.

Los escenarios tercero y cuarto significan que los cuatro puntos son todos colineales, por lo que solo necesitamos clasificar y juzgar las coordenadas de cada punto final para ver si es el tercer escenario, el cuarto escenario u otros escenarios que no tienen una intersección común.

Hasta ahora, hemos resuelto los ocho escenarios. El diagrama de flujo general es el siguiente:

Calcular coordenadas de intersección 

Excepto por el primer escenario, los otros siete escenarios son muy fáciles de encontrar el punto de intersección y el intervalo de intersección. Para el primer escenario, nuestro trabajo restante es principalmente cómo calcular las coordenadas de intersección.

 En primer lugar, conectamos los puntos finales de los dos segmentos de línea que se intersecan, y tomamos uno de los segmentos de línea originales como la línea inferior, y los dos puntos finales en el otro segmento de línea, respectivamente, forman líneas verticales altas en la línea inferior, como se muestra en la figura de arriba, Tomamos el segmento de línea AB como la base, h1 es la altura desde el punto C hasta AB, y h2 es la altura desde el punto D hasta AB.

S_{\triángulo grande hacia arriba ABC}=1/2\izquierda\|  \overrightarrow{AB} \right \|h_{1}=1/2\left |  \overrightarrow{CA}\times \overrightarrow{CB} \right |

S_{\grantriánguloarriba ABD}=1/2\izquierda\|  \overrightarrow{AB} \right \|h_{2}=1/2\left |  \overrightarrow{DA}\times \overrightarrow{DB} \right |

conjunto t=h_{2}:(h_{1}+h_{2})=\izquierda |  \overrightarrow{DA}\times \overrightarrow{DB}\right |:(\left | \overrightarrow{DA}\times \overrightarrow{DB}\right |+\left | \overrightarrow{CA}\times \overrightarrow{CB }\derecho |),

pero\overrightarrow{DO}=t(\overrightarrow{DC})

\left\{\begin{matriz} x_{O}-x_{D}=t(x_{C}-x_{D})\\ y_{O}-y_{D}=t(y_{C}- y_{D}) \end{matriz}\right.

Las coordenadas del punto de intersección O se pueden obtener(x_{O},y_{O})

Hasta ahora, la idea de solución general se ha completado.

Hoy es la víspera de Año Nuevo en 2023. Les deseo a todos un nuevo año en el Año del Conejo.

Agregaré el código más tarde, si no lo he olvidado.

Supongo que te gusta

Origin blog.csdn.net/m0_74178120/article/details/128746324
Recomendado
Clasificación