Saltar al contenido

Averiguar si dos segmentos de línea se cortan entre sí

Tenemos la respuesta a esta impedimento, al menos eso deseamos. Si sigues con alguna inquietud coméntalo y con placer te ayudaremos

Solución:

La única razón por la que dos rectas no se intersecan es si son paralelas. Ser paralelo es lo mismo que tener la misma pendiente. Entonces, en tu ejemplo, la línea $1$ tiene pendiente

$$frac17 – 1030 – 15 = frac715.$$

La línea $2$ tiene pendiente

$$frac14 – 533 – 29 = frac94.$$

Como estos dos números no son iguales, las líneas no son paralelas y se cruzan en alguna parte.

Ahora, si lo que estás considerando es solo el segmento de línea entre los dos puntos, primero consideraría las pendientes como acabamos de hacer. Si son paralelos, entonces seguro que sabes que no se cruzan. Sin embargo, si las pendientes son diferentes, se intersecarán en un punto. Luego debe encontrar este punto y ver si ocurre dentro de los límites dados en los valores de $x$.

Entonces, cuando encuentre que las líneas se cruzan en el punto $(35, 19.5)$, entonces esta intersección está fuera de los límites dados, ya que, por ejemplo, su primera línea solo va de $x = 15$ a $x = 30$ . Nunca llega a $x = 35$.

Supongo que ya puede verificar la intersección de líneas, ya que eso ya se respondió y parece que lo entiende bien.

ingrese la descripción de la imagen aquí

Los segmentos son $AB$ y $CD$. Se intersecan si su punto de intersección se encuentra dentro del rectángulo central más oscuro (es decir, el área en el espacio que ambos ocupan). En otras palabras, si el punto de intersección es $(x,y)$, entonces $x$ debe ser menor que el valor más pequeño del lado derecho (la coordenada $x$ de $AH$ aquí), y mayor que el valor más pequeño valor del lado izquierdo ($GB$). Aquí la verificación $x>GB_x$ falla, por lo que no se cruzan. La idea es similar para los valores de $y$, y tiene que pasar los 4 pruebas (dos para $x$ y dos para $y$) antes de que pueda concluir que se cruzan.

Hay dos casos a considerar al determinar si dos segmentos de línea $AB$ y $CD$ se intersecan: (1) Los segmentos de línea son no colineal (las tres imágenes superiores en la siguiente figura); (2) los segmentos de línea son colineales (las dos imágenes inferiores).

ingrese la descripción de la imagen aquí

El estándar $y = mx + b$ generalmente no es útil ya que omite las líneas verticales. Aquí lo mejor es considerar lo siguiente función implícita $h(P)$ para una recta que pasa por $A$ y $B:$ $$ h(P) = (B – A) times (P – A)= 0 $$ donde $U times V = U_x cdot V_y – U_y cdot V_x.$ Tenga en cuenta que $h(P)$ define un medio espacio determinando dónde se encuentra el punto $P$ en relación con la línea límite a través de $AB:$ $$ begin{arrayll h(P) > 0 & mbox$P$ en semiespacio positivo \ h(P) = 0 & mbox$P$ en la línea \ h(P) < 0 & mbox$P$ en medio espacio negativo endarray $$ Por lo tanto, sabemos si los puntos $C$ y $D$ se extienden a ambos lados de la línea (infinita) a través de $AB$ si tanto $h(C)$ como $h(D)$ son distintos de cero y tienen signos opuestos. En el caso general, sabemos que los segmentos de línea $AB$ y $CD$ se intersecan si los puntos $C$ y $D$ se extienden a ambos lados de la línea a través de $AB$ y los puntos $A$ y $B$ cruzan la línea a través de $CD.$

Primero debemos manejar el caso colineal donde $h(C) = 0$ y $h(D) = 0.$ Aquí tenemos una intersección iff $$ min(C_x,D_x) leq max(A_x,B_x ) cuña max(C_x,D_x) geq min(A_x,B_x) $$ y $$ min(C_y,D_y) leq max(A_y,B_y) cuña max(C_y,D_y) geq min(A_y,B_y) $$

De lo contrario, en el caso general usamos nuestras ecuaciones semiespaciales. El medio espacio $g(x)$ definido por $CD$ es $$ g(P) = (D – C) times (P – C) = 0. $$ Tenemos una intersección donde $$ (h(C ) cdot h(D) leq 0) wedge (g(A) cdot g(B) leq 0). $$

Si desea conocer el punto de intersección real, conecte el ecuación paramétrica $L(t)$ para una línea a través de $AB$ $$ L(t) = (B – A)cdot t + A, -infty < t < infty $$ en $g$ y resuelve para $t:$ $$ g(L(t)) = (D - C) times (L(t) - C) = 0 \ (D - C) times ((B - A)cdot t + A - C) = 0 \ t = frac(C - A) times (D - C)(D - C) times (B - A) $$ Introduce este valor en $t$ Vuelve a $L(t)$ y tienes tu punto de intersección. Por supuesto, asume la advertencia de que $(D - C) times (B - A) neq 0$ donde las líneas son no paralela.

Otra gran explicación para esto se puede encontrar aquí.

Más adelante puedes encontrar las crónicas de otros administradores, tú asimismo tienes la opción de dejar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *