SlideShare una empresa de Scribd logo
[..Software IDG..]
Colisiones e intersecciones entre rectas y segmentos
       http://ingenieria-dragogear.blogspot.mx/
Introducción
 En esté documento se explicara como calcular si existen colisiones entre
rectas y/o segmentos para luego aplicarlo a un lenguaje de programación.
Se aclara que los fundamentos expuestos aquí se pueden usar en cualquier
lenguaje de programación pero “mi lenguaje favorito es python” así que
cuando se llegue a la sección de programación será desarrollado en base
a código python.
Conceptos
 Recta: Las definiciones que se encuentran en libros y en la internet nos
dice; Es una sucesión de puntos infinitos acomodados en la misma
dirección, para mi es una linea muy larga es decir infinita.
 Segmento: Es un pedazo de una recta, esta se puede definirse ubicando
dos puntos que pasen por la recta. Los puntos son una condición que le
ponemos a la recta para obtener un segmento.
Creando una recta
 En geometría analítica existen ecuaciones matemáticas que al ser
graficadas(dibujadas) describen una figura geométrica, en nuestro caso
solo nos interesa la recta. Para graficar una de estas ecuaciones se le da
cualquier valor a una variable, por lo regular “X” y se resuelven las
operaciones matemáticas descritas en la ecuación y se obtiene el valor de
otra variable “Y”. Un ejemplo para que se entienda.
La ecuación de esta recta es Y=1+1X:
                                 Si a “X” le damos un valor por
                                 ejemplo 5 entonces “Y” será 6 y si
                                 le damos cualquier otro valor a “X”
                                 entonces “Y ” será un valor que en
                                 conjunto con “X” nos dará un
                                 punto (X,Y) que se ubicará en
                                 algún lugar de la recta.




                         Por ejemplo X=4:
                         Y = 1+1*4
                         Y = 1+4
                         Y=5
Ahora aremos lo inverso, obtener una recta partiendo de dos
puntos. Lo primero que hay que saber es que las rectas en genera
se basan en la misma ecuación que vimos anterior mente. Esta
ecuación es;
                                Y= b+mX.
Donde:
   Y = Ubicación del punto en el eje de las ordenadas (Altura).
   X = Ubicación del punto en el eje de las abscisas (Lugar en la ralla
   horizontal con números).
   b = Indica la altura por la cual la recta toca al eje de las ordenas
   (eje Y), también llamada intersección en “Y”.
   m = Indica la inclinación de la recta, también llamada pendiente .
Para obtener la “b” y la pendiente “m” se deben elegir primero dos
puntos los cuales definiran nuestra recta, por ejemplo los puntos C(1,5) y
D(7,1).
                                        Ahora debemos obtener la
                                        pendiente “m” con la formula:



                                         Esto sería:




Una vez obtenida la pendiente de esta recta y la de la otra ya se puede saber
si existe intersección entre ambas rectas. Para esto solo se comparan las
pendientes de ambas rectas. Si son iguales no hay intersección, si son
distintas entonces si hay intersección.
Ahora obtendremos la intersección en “Y”, es decir obtendremos
“b”, con cualquiera de las formulas siguientes:



Los que saben un poco de álgebra se darán cuenta de que las
formulas solo son la ecuación de la recta pero esta vez “b” esta
despejada.


 Vamos a resolver los dos casos con los puntos C y D
  Para el punto C(1,5);         Para el punto D(7,1)
Muy bien ahora para terminar de construir nuestra recta, solo hay
que poner los valores de “m” y “b”.
m = 0.666666
b = 5.666666
Creando un segmento
Existen dos formas de construir segmentos, una es formulando
una ecuación nueva que no dibuja puntos fuera de los que en
un principio hemos propuesto para definir el segmento, y otra
donde nosotros condicionamos una recta para formar un
segmento. En esta ocasión utilizaremos el segundo método.
Sin darnos cuenta ya hemos definido nuestros segmentos. En
la primera recta que vimos nuestro segmento es el que se
encuentra entre los dos puntos, y en la segunda recta nuestro
segmento se dio al colocar los dos puntos que utilizamos para
construir la recta.
Nuestro segmentos esta definidos
                                          por condiciones, las condiciones son
                                          los puntos que nos indican los limites
                                          de nuestro segmento.




Nota: En un próximo [..Software IDG..] veremos otro método de colisión de
segmentos.
Comprobando intersección
Ahora ya tenemos nuestra rectas y las ecuaciones, sólo nos falta
saber el punto de intercepción de las rectas. De esta forma con un
método de comparación sabremos si los segmentos se tocan o
no.
Para esto utilizaremos formulas que fueron sacadas por el método
de resolución de ecuaciones por matrices. Esta formulas fueron
reducidas y adaptadas especialmente para este método de
interceptación de segmentos.
Ejemplo tomemos los valores que sacamos de ambas
rectas.
 Recta 1:                         Recta 2:
 M1 = 1                           M2 = -0.66666
 B1 = 1                           B2 = 5.66666
Una vez que ya tenemos “Xr” y “Yr” solo es cuestión de hacer las
comparaciones necesarias.

“Xr” debe ser menor
que las x's de mayor
valor de cada punto
de ambas rectas.
Xr<5.0 y Xr<7.0

Y “Xr” debe ser
mayor que las x's de
menor valor de cada
punto de ambas
rectas.
Xr>1.0 y Xr>1.0
“Yr” debe ser menor
que las y's de mayor
valor de cada punto
de ambas rectas.
Yr<5.0 y Yr<6.0

Y “Yr” debe ser
mayor que las y's de
menor valor de cada
punto de ambas
rectas.
Yr>2.0 y Yr>1.0
2.8<5.0 y 2.8<7.0 y 2.8>1.0 y 2.8>1.0
3.8<5.0 y 3.8<6.0 y 3.8>2.0 y 3.8>1.0
¿Qué pasa cuando una recta es
             vertical?
Cuando una recta es vertical significa que su pendiente es infinita
o no existe, que es básicamente lo mismo.
En este caso los cálculos son mas sencillos, el objetivo es
encontrar a “Xr” y ”Yr” el punto de intersección entre ambas
rectas para luego compara el punto, como se hizo anteriormente.
Las formulas que se utilizan en estos caso son:
Ejemplo:
Primero debemos sacar la
pendiente “m” y la “b” de la recta
que esta inclinada.
m = -0.6666
b = 5.6666
Como ven hemos
obtenido el punto de
intersección necesario
para realizar las
comparaciones y
comprobar la existencia
de una intersección o
colisión entre rectas.
Lo ultimo que restas es
aplicar todos estos
cálculos en nuestro
lenguaje de
programación favorito.


Para los que les gusta deducir y el ver el ¿por qué? de todo, estas
formulas y métodos para calcular intersección entre un recta inclinada
y una vertical, fueron sacadas con el teorema de Pitágoras , pues si lo
notan sólo estamos calculando la proporción de un triangulo.
La programación
El lenguaje de programación en el que esta escrito el siguiente
código es python.
El código, el progrma y algunos extras pueden ser descargados
desde mi blog.
http://ingenieria-dragogear.blogspot.mx/
De la linea 1 hasta la 16 es código de importaciones y algunas
variables.
En la linea 18 y 19 se crean dos listas con las coordenadas de
nuestras rectas.
Aquí definimos la función para comprobar la colisión entre
segmentos.
Las variables X1, Y1, X2, Y2 son para encontrar la intersección en
“Y” de cada recta.
Las listas Xn y Yn son para la comparación del punto de
intersección.
Aquí intentamos(try) calcular las pendientes, si nos da un error de
división en cero hacemos que M1 o M2 sean igual a la
cadena(palabra) INFINITO .
En esta parte asemos comparaciones:
Si las pendientes son iguales no existe colisión entre las rectas
y la función nos devuelve un falso.
Si M1 es infinito es decir, si nuestra recta 1 es vertical hace los
cálculos correspondientes para la recta inclinada.

Nota: “float()” convierte a un numero entero en uno flotante.
Ejemplo; al numero 3 lo combinarte en 3.0. La función solo
agrega un “.0” al número.
En esta ultima sección de la función se hacen los cálculos si ambas
pendientes fueron diferentes de “INFINITO”.

Luego se hacen las comparaciones de X0 y Y0 para saber si el
punto sen encuentra dentro de nuestras rectas, Si es así entonces la
función devuelve “Verdadero”, de lo contrario devuelve “Falso”.
Por último se crea un ciclo while para correr nuestro
programa y visualizar lo que ocurres.
Capturas de pantalla.
Pruebas de la función de colisión.
[..Software IDG..] Colisiones e intersecciones entre rectas y segmentos
[..Software IDG..] Colisiones e intersecciones entre rectas y segmentos
Autor: Jośe Iván González Torres
http://ingenieria-dragogear.blogspot.mx/

Más contenido relacionado

PPT
Estimacionpuntual1
PDF
Bucles de sonido en android con pygame
PDF
Realidad skraach 01 El Tributo
PDF
[..Tuto ..] pygame: re dimensionar ventana y pantalla de videojuegos
PDF
Colisiones 2D: introducción
PDF
[..Tuto..] Pgs4a-0.9.4 en Ubuntu 12.04 precise instalación
PDF
Realidad Skraach – 02 La Aprendiz Nocturna
PPTX
Geometría Computacional: Interseccción de segmentos
Estimacionpuntual1
Bucles de sonido en android con pygame
Realidad skraach 01 El Tributo
[..Tuto ..] pygame: re dimensionar ventana y pantalla de videojuegos
Colisiones 2D: introducción
[..Tuto..] Pgs4a-0.9.4 en Ubuntu 12.04 precise instalación
Realidad Skraach – 02 La Aprendiz Nocturna
Geometría Computacional: Interseccción de segmentos

Similar a [..Software IDG..] Colisiones e intersecciones entre rectas y segmentos (20)

PPT
Distancia entre puntos y ecuaciones de la recta
PPT
Geometria Analitica
PPSX
Otro refuerzo de rectas y planos. MATEMATICAS.
PPT
Geometria Analitica Funciones
PDF
Introducción a la Geometría Analítica ccesa007
PPTX
Geometria anal tica_ii_
PDF
Introducción a la Geometría Analitica MB-I ccesa007
PPT
Geometria analitica
PPTX
Tema 3 def
PPSX
Calculo y geometría analítica (ecuación de la recta)completa
PPTX
Ecuaciones de la Recta Vroskyhann
PDF
El Calculo y la Geometría Analítica GA1 ccesa007
PDF
Plano cartesiano y lineas rectas
PDF
Cuaderno Matemática 10º Semestre
PPTX
La recta 2
PPTX
La recta reformado[1]
PDF
El Plano Cartesiano y La Ecuación de la Recta ccesa007
PDF
4. Semana 5-Definicion-de-linea-recta.pdf
PPTX
Explica que la viscosidad es la resistencia de un fluido al flujo y depende d...
PDF
El Plano Cartesiano y la Ecuación de la Recta MB-I ccesa007
Distancia entre puntos y ecuaciones de la recta
Geometria Analitica
Otro refuerzo de rectas y planos. MATEMATICAS.
Geometria Analitica Funciones
Introducción a la Geometría Analítica ccesa007
Geometria anal tica_ii_
Introducción a la Geometría Analitica MB-I ccesa007
Geometria analitica
Tema 3 def
Calculo y geometría analítica (ecuación de la recta)completa
Ecuaciones de la Recta Vroskyhann
El Calculo y la Geometría Analítica GA1 ccesa007
Plano cartesiano y lineas rectas
Cuaderno Matemática 10º Semestre
La recta 2
La recta reformado[1]
El Plano Cartesiano y La Ecuación de la Recta ccesa007
4. Semana 5-Definicion-de-linea-recta.pdf
Explica que la viscosidad es la resistencia de un fluido al flujo y depende d...
El Plano Cartesiano y la Ecuación de la Recta MB-I ccesa007
Publicidad

[..Software IDG..] Colisiones e intersecciones entre rectas y segmentos

  • 1. [..Software IDG..] Colisiones e intersecciones entre rectas y segmentos http://ingenieria-dragogear.blogspot.mx/
  • 2. Introducción En esté documento se explicara como calcular si existen colisiones entre rectas y/o segmentos para luego aplicarlo a un lenguaje de programación. Se aclara que los fundamentos expuestos aquí se pueden usar en cualquier lenguaje de programación pero “mi lenguaje favorito es python” así que cuando se llegue a la sección de programación será desarrollado en base a código python.
  • 3. Conceptos Recta: Las definiciones que se encuentran en libros y en la internet nos dice; Es una sucesión de puntos infinitos acomodados en la misma dirección, para mi es una linea muy larga es decir infinita. Segmento: Es un pedazo de una recta, esta se puede definirse ubicando dos puntos que pasen por la recta. Los puntos son una condición que le ponemos a la recta para obtener un segmento.
  • 4. Creando una recta En geometría analítica existen ecuaciones matemáticas que al ser graficadas(dibujadas) describen una figura geométrica, en nuestro caso solo nos interesa la recta. Para graficar una de estas ecuaciones se le da cualquier valor a una variable, por lo regular “X” y se resuelven las operaciones matemáticas descritas en la ecuación y se obtiene el valor de otra variable “Y”. Un ejemplo para que se entienda.
  • 5. La ecuación de esta recta es Y=1+1X: Si a “X” le damos un valor por ejemplo 5 entonces “Y” será 6 y si le damos cualquier otro valor a “X” entonces “Y ” será un valor que en conjunto con “X” nos dará un punto (X,Y) que se ubicará en algún lugar de la recta. Por ejemplo X=4: Y = 1+1*4 Y = 1+4 Y=5
  • 6. Ahora aremos lo inverso, obtener una recta partiendo de dos puntos. Lo primero que hay que saber es que las rectas en genera se basan en la misma ecuación que vimos anterior mente. Esta ecuación es; Y= b+mX. Donde: Y = Ubicación del punto en el eje de las ordenadas (Altura). X = Ubicación del punto en el eje de las abscisas (Lugar en la ralla horizontal con números). b = Indica la altura por la cual la recta toca al eje de las ordenas (eje Y), también llamada intersección en “Y”. m = Indica la inclinación de la recta, también llamada pendiente .
  • 7. Para obtener la “b” y la pendiente “m” se deben elegir primero dos puntos los cuales definiran nuestra recta, por ejemplo los puntos C(1,5) y D(7,1). Ahora debemos obtener la pendiente “m” con la formula: Esto sería: Una vez obtenida la pendiente de esta recta y la de la otra ya se puede saber si existe intersección entre ambas rectas. Para esto solo se comparan las pendientes de ambas rectas. Si son iguales no hay intersección, si son distintas entonces si hay intersección.
  • 8. Ahora obtendremos la intersección en “Y”, es decir obtendremos “b”, con cualquiera de las formulas siguientes: Los que saben un poco de álgebra se darán cuenta de que las formulas solo son la ecuación de la recta pero esta vez “b” esta despejada. Vamos a resolver los dos casos con los puntos C y D Para el punto C(1,5); Para el punto D(7,1)
  • 9. Muy bien ahora para terminar de construir nuestra recta, solo hay que poner los valores de “m” y “b”. m = 0.666666 b = 5.666666
  • 10. Creando un segmento Existen dos formas de construir segmentos, una es formulando una ecuación nueva que no dibuja puntos fuera de los que en un principio hemos propuesto para definir el segmento, y otra donde nosotros condicionamos una recta para formar un segmento. En esta ocasión utilizaremos el segundo método. Sin darnos cuenta ya hemos definido nuestros segmentos. En la primera recta que vimos nuestro segmento es el que se encuentra entre los dos puntos, y en la segunda recta nuestro segmento se dio al colocar los dos puntos que utilizamos para construir la recta.
  • 11. Nuestro segmentos esta definidos por condiciones, las condiciones son los puntos que nos indican los limites de nuestro segmento. Nota: En un próximo [..Software IDG..] veremos otro método de colisión de segmentos.
  • 12. Comprobando intersección Ahora ya tenemos nuestra rectas y las ecuaciones, sólo nos falta saber el punto de intercepción de las rectas. De esta forma con un método de comparación sabremos si los segmentos se tocan o no. Para esto utilizaremos formulas que fueron sacadas por el método de resolución de ecuaciones por matrices. Esta formulas fueron reducidas y adaptadas especialmente para este método de interceptación de segmentos.
  • 13. Ejemplo tomemos los valores que sacamos de ambas rectas. Recta 1: Recta 2: M1 = 1 M2 = -0.66666 B1 = 1 B2 = 5.66666
  • 14. Una vez que ya tenemos “Xr” y “Yr” solo es cuestión de hacer las comparaciones necesarias. “Xr” debe ser menor que las x's de mayor valor de cada punto de ambas rectas. Xr<5.0 y Xr<7.0 Y “Xr” debe ser mayor que las x's de menor valor de cada punto de ambas rectas. Xr>1.0 y Xr>1.0
  • 15. “Yr” debe ser menor que las y's de mayor valor de cada punto de ambas rectas. Yr<5.0 y Yr<6.0 Y “Yr” debe ser mayor que las y's de menor valor de cada punto de ambas rectas. Yr>2.0 y Yr>1.0
  • 16. 2.8<5.0 y 2.8<7.0 y 2.8>1.0 y 2.8>1.0 3.8<5.0 y 3.8<6.0 y 3.8>2.0 y 3.8>1.0
  • 17. ¿Qué pasa cuando una recta es vertical? Cuando una recta es vertical significa que su pendiente es infinita o no existe, que es básicamente lo mismo. En este caso los cálculos son mas sencillos, el objetivo es encontrar a “Xr” y ”Yr” el punto de intersección entre ambas rectas para luego compara el punto, como se hizo anteriormente. Las formulas que se utilizan en estos caso son:
  • 18. Ejemplo: Primero debemos sacar la pendiente “m” y la “b” de la recta que esta inclinada. m = -0.6666 b = 5.6666
  • 19. Como ven hemos obtenido el punto de intersección necesario para realizar las comparaciones y comprobar la existencia de una intersección o colisión entre rectas. Lo ultimo que restas es aplicar todos estos cálculos en nuestro lenguaje de programación favorito. Para los que les gusta deducir y el ver el ¿por qué? de todo, estas formulas y métodos para calcular intersección entre un recta inclinada y una vertical, fueron sacadas con el teorema de Pitágoras , pues si lo notan sólo estamos calculando la proporción de un triangulo.
  • 20. La programación El lenguaje de programación en el que esta escrito el siguiente código es python. El código, el progrma y algunos extras pueden ser descargados desde mi blog. http://ingenieria-dragogear.blogspot.mx/
  • 21. De la linea 1 hasta la 16 es código de importaciones y algunas variables. En la linea 18 y 19 se crean dos listas con las coordenadas de nuestras rectas.
  • 22. Aquí definimos la función para comprobar la colisión entre segmentos. Las variables X1, Y1, X2, Y2 son para encontrar la intersección en “Y” de cada recta. Las listas Xn y Yn son para la comparación del punto de intersección.
  • 23. Aquí intentamos(try) calcular las pendientes, si nos da un error de división en cero hacemos que M1 o M2 sean igual a la cadena(palabra) INFINITO .
  • 24. En esta parte asemos comparaciones: Si las pendientes son iguales no existe colisión entre las rectas y la función nos devuelve un falso. Si M1 es infinito es decir, si nuestra recta 1 es vertical hace los cálculos correspondientes para la recta inclinada. Nota: “float()” convierte a un numero entero en uno flotante. Ejemplo; al numero 3 lo combinarte en 3.0. La función solo agrega un “.0” al número.
  • 25. En esta ultima sección de la función se hacen los cálculos si ambas pendientes fueron diferentes de “INFINITO”. Luego se hacen las comparaciones de X0 y Y0 para saber si el punto sen encuentra dentro de nuestras rectas, Si es así entonces la función devuelve “Verdadero”, de lo contrario devuelve “Falso”.
  • 26. Por último se crea un ciclo while para correr nuestro programa y visualizar lo que ocurres.
  • 27. Capturas de pantalla. Pruebas de la función de colisión.
  • 30. Autor: Jośe Iván González Torres http://ingenieria-dragogear.blogspot.mx/