elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con las matemáticas 2 !!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con las matemáticas 2 !!!  (Leído 2,898 veces)
BlackM4ster


Desconectado Desconectado

Mensajes: 499


Error, el teclado no funciona. Pulse F1 para continuar


Ver Perfil WWW
Ayuda con las matemáticas 2 !!!
« en: 13 Abril 2013, 18:44 pm »

Hola, estoy intentando programar el motor de colisiones. El problema viene cuando tengo 2 cubos (A y B) y cuando se supone que chochan es cuando alguno de los 4 vertices inferiores de A choca con el plano superior de B. Como calculo colision Punto-Plano?


En línea

- Pásate por mi web -
https://codeisc.com
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayuda con las matemáticas 2 !!!
« Respuesta #1 en: 13 Abril 2013, 19:36 pm »

Sinceramente, tengo curiosidad por saber que estás haciendo  ;-)

La colisión punto-plano se hace comprobando si el punto pertenece al plano en cuestión.

La forma más sencilla sería sacar la ecuación implicita del plano y sustituir. Esta es ecuación de un plano delimitado por 3 vertices (el cuarto sobra):



X1,X2,X3 son las coordenadas de los tres vertices. X,Y,Z representarían el punto que quieres comprobar.

Sustituye por los valores correspondientes, realiza el determinante y comprueba que sea cero. Si no lo es, entonces no pertenece al plano.


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda con las matemáticas 2 !!!
« Respuesta #2 en: 13 Abril 2013, 19:46 pm »

Hola, estoy intentando programar el motor de colisiones. El problema viene cuando tengo 2 cubos (A y B) y cuando se supone que chochan es cuando alguno de los 4 vertices inferiores de A choca con el plano superior de B. Como calculo colision Punto-Plano?


Una forma es hallar la ecuación del plano superior del cubo B, con tres vértices es suficiente. Se producirá colisión cuando al sustituir los vértices inferiores de A en dicha ecuación alguno la cumplan.

Tiene el inconveniente que se supone un movimiento "continuo", cosa que supongo no será así sino en incrementos determinados. En este caso la colisión se producirá si la ZveticesA > (o <, según el sistema de referencia) ZecuaciónDelplano.

Pero mejor pones una imagen de como están los cubos, en especial el B, ya que si está horizontal bastará con comparar las ZvérticesA con la ZplanosuperiorB.

Saluditos. ...
« Última modificación: 13 Abril 2013, 19:50 pm por leosansan » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayuda con las matemáticas 2 !!!
« Respuesta #3 en: 13 Abril 2013, 19:50 pm »

Tiene el inconveniente que se supone un movimiento "continuo"
Cierto. Habría que añadir un pequeño margen (por ejemplo, si el determinante está entre -0,5 y 0,5. Entonces hay colisión).
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
BlackM4ster


Desconectado Desconectado

Mensajes: 499


Error, el teclado no funciona. Pulse F1 para continuar


Ver Perfil WWW
Re: Ayuda con las matemáticas 2 !!!
« Respuesta #4 en: 14 Abril 2013, 11:35 am »

Saco una foto, estoy haciendo un game engine (mi primer juego, justo acababa de aprender c++ de forma decente cuando me metí con OpenGL). Os cuento el problema desde el principio:
Tengo 3 tipos de detectores de colisiones programados:
 - Bounding sphere (para cosas que no requieren precision absoluta como coger monedas)
 - Axis aligned Bounding Box (Los bloques de terreno "B")
 - Objet aligned bounding box (El personaje "A")
Tengo programada una simulación de la gravedad que hace que cada frame (el juego está capado a 30fps) baje un poco a no ser que haya colision. Detectar la colision entre los dos bloques es fácil, pero no sé luego como saber si estoy chocando de frente, en vertical y a partir de eso evitar ciertos movimientos (como saltar teniendo algo encima o caminar hacia otro objeto)
Dejo un video del juego en cuestión (Minuto 2:15, donde el cursor es rojo, es el que digo)
Os dejo una foto de las bounding box también. Mi problema es detectar si choca de frente o en vertical con el suelo y la forma de hacerlo, se me ocurrió vertice a vertice comprobar en el plano del "suelo".

Foto:
Video:

PD: El plano A y B están Horizontales los dos
En línea

- Pásate por mi web -
https://codeisc.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Matematicas en programacion [ayuda]
Programación General
Psyke1 2 3,396 Último mensaje 6 Mayo 2010, 23:04 pm
por Psyke1
Ayuda, matemáticas,ecuación de primer grado. « 1 2 »
Dudas Generales
anonimo12121 10 9,861 Último mensaje 3 Febrero 2011, 15:15 pm
por anonimo12121
Ayuda con Matematicas ( Limite de Identidades Trigonometricas)
Dudas Generales
lpnu 8 9,694 Último mensaje 20 Octubre 2011, 06:44 am
por xdeadpoolx
ayuda con un ejercicio de matemáticas básicas
Foro Libre
flacc 2 3,864 Último mensaje 19 Febrero 2012, 08:41 am
por flacc
Ayuda con las matemáticas !!!
Programación General
BlackM4ster 1 2,341 Último mensaje 24 Abril 2013, 19:22 pm
por Saberuneko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines