Registrarse    Identificarse    Foro    FAQ

Índice general » General » Programación | Programming




Nuevo tema Responder al tema  [ 53 mensajes ]  Ir a página 1, 2  Siguiente
Autor Mensaje
 Asunto: Tutorial sobre Detección de colisiones
 Nota Publicado: 13 Jun 2006 17:44 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 24 Dic 2005 10:18
Mensajes: 9252
Ubicación: Madrid
A petición de Alx, me he estado currando un mini tutorial sobre la detección de colisiones. Es bastante básico, no esperéis maravillas, pero creo que puede ser útil para quien esté empezando a programar.

Lo podéis bajar de...

http://www.telefonica.net/web2/panik/docs/Colisiones.doc

Ya me diréis qué os parece...

Aportaciones y CORRECCIONES serán muy bienvenidas

Añado: A petición de tecnoxarxa, disponible también en...

http://www.telefonica.net/web2/panik/docs/Colisiones.odt

_________________
Un saludo.
Imagen


Ultima edición por Benway el 09 Nov 2006 20:49, editado 1 vez en total

Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 13 Jun 2006 18:06 
Desconectado
128 bits
128 bits
Avatar de Usuario

Registrado: 23 Dic 2004 18:27
Mensajes: 2983
Ubicación: El Foro, Madrid, España
Osea que no era cosa de los enanos de dentro del chí, no? :P

¡Mu currao Ben! Si lo hubiese tenido cuando empecé mi Ghost and Goblins en Basic con mi CPC ... (no pasé de la pantalla de presentación, no te digo más, jua jua)

_________________
http://www.lacoctelera.com/losinsociables
http://usuarios.lycos.es/losinsociables


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 13 Jun 2006 18:21 
Desconectado
256 bits
256 bits
Avatar de Usuario

Registrado: 25 Dic 2005 19:42
Mensajes: 5928
Ubicación: Barcelona
A mi me encanta, lo voy a imprimir para llevármelo al curro y leeeeerlo tranquilamente.

Además,...es una forma de estar en el trabajo más cerca de tí :oops:

_________________
1:1 Amarás al Spectrum por encima de todas las cosas


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 13 Jun 2006 22:10 
Desconectado
256 bits
256 bits
Avatar de Usuario

Registrado: 23 Dic 2004 16:36
Mensajes: 8781
Ubicación: Torreznolandia
Tremendo Ben, tremendo!
:D


Por cierto, que aprovecho la coyuntura para picarte un poco... a ver si te pasas al z88dk! ;)

_________________
Síguenos en twitter: http://twitter.com/mojon_twins
AMBAR O MUERTE!!!!!!!!!!!


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 13 Jun 2006 22:24 
Desconectado
256 bits
256 bits
Avatar de Usuario

Registrado: 10 Ene 2005 22:05
Mensajes: 3562
Ubicación: Barcelona
Te lo has "currao" de lo lindo... muy buen tutorial, si señor... ya querrían algunas de esas güebs chunguillas de programación de juegos tener tutoriales así de bién explicados...

_________________
Sir Fred el Remake ( PC )

Alien 8 Remake ( MSX2 )

Capitán Sevilla el Remake ( PC )

Knight Lore Remake ( MSX2 )


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 13 Jun 2006 22:41 
Desconectado
256 bits
256 bits
Avatar de Usuario

Registrado: 14 Nov 2005 14:47
Mensajes: 3170
Llevo tiempo leyendo e intentando entender todo esto, con los tutoriales que tengo, mas los que voy pillando por ahi, pues voy siguiendo los oejemplo y voy o intento practicar algo, pero sobretodo entenderlo, desde hace meses, llevo leyendo los tutoriales que me aconsejasteis, este me lo he descargado, y lo tengo ya guardado, gracias por tomarte las molestias, mañana con mas tiempo le dare un vistazo, ESTUPENDO :wink:

_________________
http://zemman.wordpress.com/


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 13 Jun 2006 22:43 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 24 Dic 2005 10:18
Mensajes: 9252
Ubicación: Madrid
Pues muchas gracias, chicos! ;)

Lo del paso al z88dk lo tengo pensado para el verano... pq ahora estoy bastante centrado en el examen de la opo del día 25... y no quiero sentirme más culpable de lo que ya me siento por no estudiar :?... pero cuando llegue Julio... algo habrá que hacer ;)

_________________
Un saludo.
Imagen


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Sep 2006 14:17 
Desconectado
128 bits
128 bits
Avatar de Usuario

Registrado: 14 Sep 2006 15:16
Mensajes: 1636
Muy interesante

SALUDOS.


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Sep 2006 16:54 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 24 Dic 2005 10:18
Mensajes: 9252
Ubicación: Madrid
Gracias, Kovenan.

Tengo pendiente de añadir una cosilla que me comentó Alx: La determinación trigonométrica de la distancia entre dos puntos, que puede ser muy útil, ya que, aunque resultaría un poco lenta de hacer sobre la marcha, como en muchos juegos necesitamos una tabla pregenerada de senos y cosenos, podemos re-aprovecharla también para eso ;)

_________________
Un saludo.
Imagen


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Sep 2006 17:40 
Desconectado
128 bits
128 bits
Avatar de Usuario

Registrado: 06 Oct 2005 12:20
Mensajes: 2153
Ubicación: Barcelona
No me lo he podido leer todo, pero tiene muy buena pinta!
con lo que cuesta encontrar material de este tipo en español, y además tan bien explicado :)
Solo una pequeña tonteria... no sería Bounding Box en vez de Bouncing Box?


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Sep 2006 17:46 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 24 Dic 2005 10:18
Mensajes: 9252
Ubicación: Madrid
cht666cht escribió:
No me lo he podido leer todo, pero tiene muy buena pinta!
con lo que cuesta encontrar material de este tipo en español, y además tan bien explicado :)
Solo una pequeña tonteria... no sería Bounding Box en vez de Bouncing Box?


MUCHAS GRACIAS!!!!

:oops: Se me tenía que notar que no hablo inglés, no? :lol: Pues Muchas Gracias también... ahora ya tengo otra motivo para editarlo y meter lo que comentó Alx... de hoy no pasa!!! ;)

_________________
Un saludo.
Imagen


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Sep 2006 20:10 
Desconectado
128 bits
128 bits
Avatar de Usuario

Registrado: 14 Sep 2006 15:16
Mensajes: 1636
Teniendo las coordenadas de los puntos por que necesitas el angulo para saber la distancia entre los 2 puntos ??

SALUDOS.


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Sep 2006 20:16 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 24 Dic 2005 10:18
Mensajes: 9252
Ubicación: Madrid
La verdad es que ahora que he ido a añadirlo, me he dado cuenta de que se necesitaría saber el ángulo, aunque se podría obtener a partir de las coordenadas... pero no creo que resulte más eficiente... :?

De todas maneras, hoy estoy poco "matemático", que ayer estuve de guardia y no dormí nada en toda la noche... así que no me funciona muy bien el cerebro :D

_________________
Un saludo.
Imagen


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Sep 2006 20:35 
Desconectado
128 bits
128 bits
Avatar de Usuario

Registrado: 14 Sep 2006 15:16
Mensajes: 1636
YO tampoco estoy muy fino hoy pero no estaras confundiendo el paso de coordenadas de polar a rectangular con las distancias?

Citar:
La verdad es que ahora que he ido a añadirlo, me he dado cuenta de que se necesitaría saber el ángulo, aunque se podría obtener a partir de las coordenadas... pero no creo que resulte más eficiente...


Para la distancia el angulo no es necesario, teniendo las coordenadas de los 2 puntos puedes sacar por un lado la distancia y por otro el angulo, no se alo mejor te estoy entendiendo mal.

SALUDOS.


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Sep 2006 20:47 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 24 Dic 2005 10:18
Mensajes: 9252
Ubicación: Madrid
Ya te digo, Kovenan, que no me hagas mucho caso hoy :D (A parte de que dejé demasiado tiempo las matemáticas "olvidadas", y ahora cuesta volver a ponerse :lol:)

Yo, cuando he tenido que calcular la distancia entre dos puntos lo he hecho así:

Distancia = RAIZ CUADRADA DE ( (x2 - x1)2 + (y2 - y1)2 )

Alx me sugirió lo de la trigonometría, y lo miré por encima y me pareció buena idea, pero al ir a añadirlo hoy, me he dado cuenta de que necesitas saber el ángulo del triángulo rectángulo, y, aunque lo puedes obtener en base a las diferencias de las coordenadas, tienes que hacer tantos cálculos que no creo que sea eficiente. :?

_________________
Un saludo.
Imagen


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Sep 2006 21:10 
Desconectado
128 bits
128 bits
Avatar de Usuario

Registrado: 14 Sep 2006 15:16
Mensajes: 1636
Esa es la formula si Sr y con eso por lo que yo interpreto de tu tutorial te basta, a lo mejor para movimientos parabolicos pues hacen falta los senos y cosenos.

SALUDOS.


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Sep 2006 21:25 
Desconectado
128 bits
128 bits
Avatar de Usuario

Registrado: 24 Dic 2004 01:49
Mensajes: 2205
Ubicación: La vile du Barcelona
Benway escribió:
Distancia = RAIZ CUADRADA DE ( (x2 - x1)2 + (y2 - y1)2 )

Alx me sugirió lo de la trigonometría, y lo miré por encima y me pareció buena idea, pero al ir a añadirlo hoy, me he dado cuenta de que necesitas saber el ángulo del triángulo rectángulo, y, aunque lo puedes obtener en base a las diferencias de las coordenadas, tienes que hacer tantos cálculos que no creo que sea eficiente. :?


:eek: :eek: :eek: :eek: :eek: :eek: La parte contratante de la primera parte, sera considerada como la parte contratante de la segunta parte. :eek: :eek: :eek: :eek: MOOOCCC!!! MOOOOCCC!!!

Creo que solo he pillado "Alx me sugirio" jajaja


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 18 Sep 2006 21:48 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 24 Dic 2005 10:18
Mensajes: 9252
Ubicación: Madrid
Beyker escribió:
Benway escribió:
Distancia = RAIZ CUADRADA DE ( (x2 - x1)2 + (y2 - y1)2 )

Alx me sugirió lo de la trigonometría, y lo miré por encima y me pareció buena idea, pero al ir a añadirlo hoy, me he dado cuenta de que necesitas saber el ángulo del triángulo rectángulo, y, aunque lo puedes obtener en base a las diferencias de las coordenadas, tienes que hacer tantos cálculos que no creo que sea eficiente. :?


:eek: :eek: :eek: :eek: :eek: :eek: La parte contratante de la primera parte, sera considerada como la parte contratante de la segunta parte. :eek: :eek: :eek: :eek: MOOOCCC!!! MOOOOCCC!!!

Creo que solo he pillado "Alx me sugirio" jajaja


:P :lol::lol::lol::lol::lol::lol:

Ya me gustaría a mí hacer juegos como los tuyos ;)

_________________
Un saludo.
Imagen


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Sep 2006 04:55 
Desconectado
256 bits
256 bits
Avatar de Usuario

Registrado: 25 Dic 2005 19:42
Mensajes: 5928
Ubicación: Barcelona
No es que se use senos o cosenos para hacer parábolas. También las podrías hacer por Pitágoras.

Lo que Ben os dice es que yo le dije que con tres fórmulas más simples que Pitágoras yo en el trabajo resuelvo cualquier triángulo rectángulo.

Las fórmulas son tres, la de la Tangente, Seno y Coseno.

Tan=C.Opuesto/C.convergente

Seno=C.Opuesto/Hipotenusa

Coseno=C.Convergente/Hipotenusa


Con estas tres fórmulas tan solo tendrías que despejarla según la incognita que quieras resolver. Si por ejemplo en la fórmula del seno lo que quieres resolver es el C.Opuesto, quedaría así:

C.Opuesto=Senoº x Hipotenusa (Te daría el vector Y)

El problema que le ha surgido a Ben es que cuando lo que tienes son los dos catetos, el Opuesto y el Convergente primero tendrías que usar la primera fórmula, invertir el resultado para darte los grados y después usar cualquiera de las dos del Seno o Coseno.

Tan=C.Opuesto/C.Convergente ---> INVERSO TAN=GRADOS

Y después con los grados una de las dos:

C.Opuesto=Seno(de los grados que has sacado) x Hipotenusa

---

Seguro que existe una Fórmula directa sin buscar los grados pero es que ahora no me acuerdo, tendría que mirar el Casillas o alguna tabla que tenga por el curro a ver :?

_________________
1:1 Amarás al Spectrum por encima de todas las cosas


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Sep 2006 07:27 
Desconectado
256 bits
256 bits
Avatar de Usuario

Registrado: 22 Abr 2005 13:25
Mensajes: 11932
Alpha = arctg (b / a) con b y a los catetos.

_________________
http://www.mojontwins.com


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Sep 2006 10:18 
Desconectado
128 bits
128 bits
Avatar de Usuario

Registrado: 14 Sep 2006 15:16
Mensajes: 1636
Yo no se que algoritmos se usan o formulas para los juegos,pero no entiendo para que se pueden usar las formulas trigonometricas de un triangulo rectangulo, teniendo las coordenadas, algún ejemplo??

Me ha gustado esto de las colisiones

SALUDOS.


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Sep 2006 10:19 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 24 Dic 2005 10:18
Mensajes: 9252
Ubicación: Madrid
Kovenan escribió:
Me ha gustado esto de las colisiones


:oops: GRACIAS! :)

_________________
Un saludo.
Imagen


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Sep 2006 10:30 
Desconectado
256 bits
256 bits
Avatar de Usuario

Registrado: 22 Abr 2005 13:25
Mensajes: 11932
Kovenan escribió:
Yo no se que algoritmos se usan o formulas para los juegos,pero no entiendo para que se pueden usar las formulas trigonometricas de un triangulo rectangulo, teniendo las coordenadas, algún ejemplo??

Me ha gustado esto de las colisiones

SALUDOS.


Para calcular distancias. Así, por ejemplo, puedes hacer que cambie el estado de un enemigo de "andando por ahí" a "persiguiéndote"... entre muchas otras cosas :)

_________________
http://www.mojontwins.com


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Sep 2006 10:34 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 24 Dic 2005 10:18
Mensajes: 9252
Ubicación: Madrid
na_th_an escribió:
Kovenan escribió:
Yo no se que algoritmos se usan o formulas para los juegos,pero no entiendo para que se pueden usar las formulas trigonometricas de un triangulo rectangulo, teniendo las coordenadas, algún ejemplo??

Me ha gustado esto de las colisiones

SALUDOS.


Para calcular distancias. Así, por ejemplo, puedes hacer que cambie el estado de un enemigo de "andando por ahí" a "persiguiéndote"... entre muchas otras cosas :)


Yo creo que Kovenan se refiere a que qué ventajas tiene calcular las distancias mediante trigonometría, frente a calcularlas mediante el teorema de pitágoras, con la formulita que comentábamos ayer... ¿no?

Yo creo que, si tenemos una tabla pregenerada para los senos y cosenos, es un cálculo MUY rápido y totalmente EXACTO, y la tabla pregenerada es una cosa muy frecuente, si queremos hacer cualquier movimiento elíptico y / o circular, si queremos hacer el famoso efectillo visual del agua, y mil aplicaciones más :)

¿no? :?

_________________
Un saludo.
Imagen


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Sep 2006 10:38 
Desconectado
256 bits
256 bits
Avatar de Usuario

Registrado: 22 Abr 2005 13:25
Mensajes: 11932
Yo me quedo con la fórmula de la arctg para el ángulo, que se hace en 0.2 :P (mi amiga atan2 del C :lol:)

_________________
http://www.mojontwins.com


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Sep 2006 10:45 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 24 Dic 2005 10:18
Mensajes: 9252
Ubicación: Madrid
Entonces... para añadirlo al tutorial... a ver si lo he entendido...

Si tenemos unos catetos A y B (que serían las diferencias de las coordenadas: A = x2 - x1 y B = y2 - y1), ¿la distancia en píxeles entre ambos se calcularía Distancia = ArcoTangente (B / A)? ¿Y eso en C se pondría así Distancia = atan2 (B, A);?

_________________
Un saludo.
Imagen


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Sep 2006 11:21 
Desconectado
128 bits
128 bits
Avatar de Usuario

Registrado: 14 Sep 2006 15:16
Mensajes: 1636
Exacto yo me referia a que no le veo ventaja al calculo trigonometrico y menos solo para casos con angulos rectos.

Citar:
Si tenemos unos catetos A y B (que serían las diferencias de las coordenadas: A = x2 - x1 y B = y2 - y1), ¿la distancia en píxeles entre ambos se calcularía Distancia = ArcoTangente (B / A)? ¿Y eso en C se pondría así Distancia = atan2 (B, A);?


EL cateto A y B seria una longitud, distancia o como quieras llamarlo, pero no es la diferencia de las cordenadas,para saber A y B necesitamos 3 puntos.

SALUDOS.


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Sep 2006 11:34 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 24 Dic 2005 10:18
Mensajes: 9252
Ubicación: Madrid
Es que siempre se forma un triángulo rectángulo:

Imagen

De esa manera, solamente con la operación que decíamos antes, tenemos la distancia (que es la hipotenusa de ese triángulo).

El tercer punto que comentas, sería el punto C, que es el vértice que tiene el ángulo recto.

Sobre ese dibujo, si he entendido bien, se aplicaría lo que comentábamos antes:
Citar:
Si tenemos unos catetos A y B (que serían las diferencias de las coordenadas: A = x2 - x1 y B = y2 - y1), ¿la distancia en píxeles entre ambos se calcularía Distancia = ArcoTangente (B / A)? ¿Y eso en C se pondría así Distancia = atan2 (B, A);?

_________________
Un saludo.
Imagen


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Sep 2006 11:54 
Desconectado
128 bits
128 bits
Avatar de Usuario

Registrado: 14 Sep 2006 15:16
Mensajes: 1636
Si claro pero necesitas saber los valores de A y B (los catetos) y el angulo, yo sigo viendo mas rapido aplicar la famosa formula de la raiz de la diferencia de puntos, ademas si el angulo no es recto sigue siendo valida, o incluso si tienes A y B la clasica formula de pitagoras H2=c2+c2
No se a lo mejor he interpretado mal la teoria de colisiones, pero basicamente es saber cuando 2 coordenadas distintas en principio al acercarse y colisionar se convierten en la misma no?

SALUDOS.


Arriba 
 Perfil  
 
 Asunto:
 Nota Publicado: 19 Sep 2006 12:04 
Desconectado
Site Admin
Site Admin
Avatar de Usuario

Registrado: 24 Dic 2005 10:18
Mensajes: 9252
Ubicación: Madrid
Kovenan escribió:
Si claro pero necesitas saber los valores de A y B (los catetos) y el angulo, yo sigo viendo mas rapido aplicar la famosa formula de la raiz de la diferencia de puntos, ademas si el angulo no es recto sigue siendo valida, o incluso si tienes A y B la clasica formula de pitagoras H2=c2+c2
No se a lo mejor he interpretado mal la teoria de colisiones, pero basicamente es saber cuando 2 coordenadas distintas en principio al acercarse y colisionar se convierten en la misma no?

SALUDOS.


De lo que se trata (en este método de Bounding box circular, o caja envolvente circular), es que dos círculos cuyo centro esté a una distancia menor o igual a la distancia entre sus centros están colisionando.

La fórmula del la raiz cuadrada que comentas, también la haces en base a los catetos A y B, de hecho, es la raíz cuadrada de la suma de los catetos.

De esta otra manera, lo que haces es la ArcoTangente de la división de un cateto entre otro...

Otra manera de hacer lo mismo ;)

_________________
Un saludo.
Imagen


Arriba 
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
 
Nuevo tema Responder al tema  [ 53 mensajes ]  Ir a página 1, 2  Siguiente

Índice general » General » Programación | Programming


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados

 
 

 
No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Saltar a:  
cron
 
Thermomix | Recetas Thermomix