Colisiones
Que vamos a estudiar
• Introducción
– Intro
– Tiempo.
– Bounding-box
•
•
•
•
Choque esfera-esfera
Choque caja-caja
Arboles, mapas..
Choque esfera-plano.
Introducción
• Geometría Euclídea.
– Vamos a trabajar como hasta ahora con los mismos sistemas
cartesianos.
– Problema temporal. El tiempo es discreto. Frames/segundo.
• Realizar el calculo con anterioridad.
T=0
T=0
T=1
T=1Bounding-box
•Para el calculo de las colisiones es necesario determinar si se
intersecan cada una de las caras de un objeto con las de otro.
•Para simplificarlo, en una primera aproximación se recurre a
las esferas, cajas, cilindros, elipsoides que envuelven el objeto.
Bounding-esferas
Una esfera engloba el objeto.
Se caracteriza por centro, radio:
• Centro: punto, float x,y,z
• Radio: floatEsfera-Esfera
• Simple La distancia entre sus centro es menor que la suma
de sus radios.
float distaciadospuntos(punto a, punto b) {
return (sqrt((a.x-b.x) * (a.x-b.x) + (a.y-b.y) * (a.y-b.y) + (a.z-b.z) * (a.z-b.z)));
}
int esferaesfera (esfera a, esfera b) {
if (distaciadospuntos(a.centro,b.centro) <= a.radio+b.radio)
{
printf ("tocado\n"); return 1;
}
else return 0;
}
Bounding-box
Una cajaengloba el objeto, se caracteriza por dos puntos
minBounds and maxBounds :
minBounds : punto, float x,y,z;
maxBounds : punto, float x,y,z
Hay dos posibilidades
B
A
Ejes alineados
Ejes no-alineados
Axis Aligned Bounding Boxes (AABB)
•
El uso de cajas alineadas es el procedimiento más utilizado ya que es fácil,
rápido y barato de calcular. Lo que hacemos es determinar si las esquinas cada
de susocho esquinas está dentro de la caja del otro
–
AxMin < BxMax and AxMax > BxMin
»
AND
– AyMin < ByMax and AyMax > ByMin
»
AND
– AzMin < BzMax and AzMax > BzMin
B
A
Test Ejes Separados. SAT
•
•
Es un método simple aplicable a segmentos, triángulos y cajas no
alineadas
Se basa en:
– Dos objetos A y B son disjuntos si para un vector de proyección v v.A y
v.B son disjuntos.
A
VerificaciónMovimiento objetos
A
A
Calculo de Box
A
–AxMin < BxMax and AxMax > BxMin
AABB
–AyMin < ByMax and AyMax > ByMin
–AzMin < BzMax and AzMax > BzMin
Árboles, particionado del espacio Mapas
• Árboles.
• Particionado del espacio
• Mapas
Método general
Trazado de rayos
Esfera-Plano
• Se trata de un caso más general.
• Se basa en el algoritmo de trazado de rayos (radiosidad).
Definicióndel Problema Esfera-plano
• Esfera caracterizada por su Centro y su radio y un vector
director.
D (x,y,z)
• Un plano caracterizado por su normal y un punto.
• N x p(x,y,z) = d
• El tiempo [0, infinito]
Rayo
• Un rayo se representa por un vector que denota su punto de
comienzo y un vector velocidad que denota como el rayo
viaja. A partir de ahí se calcula la posición de la partícula
en el tiempo.• Pr(x,y,z) = Por (x,y,z) + tiempo x D (x,y,z).
• Un plano es denotado por su normal, un escalar y un
punto de la superficie. Estos parámetros puede ser
obtenidos a partir de los tres puntos del plano.
• N x p(x,y,z) = d
X = producto escalar
Intersección Rayo-Plano.
•
Si el vector interseca al plano entonces debe existir un punto que satisfaga la
ecuación del plano.
•
•
Pr(x,y,z) = Por(x,y,z) + tiempo x D (x,y,z)
•
N x p(x,y,z) = d
•
•
N x (Por(x,y,z) + tiempo * D (x,y,z))= d
De donde
Tiempo = (d –N x Por (x,y,z)) / (N x D)
•
Si reemplazamos d
Tiempo = (N x p(x,y,z) –N x Por(x,y,z)) / (N x D(x,y,z));
Tiempo = (N x (p(x,y,z) – Por(x,y,z)) / (N x D (x,y,z));
Intersección Rayo-Plano
• Tiempo representa la distancia temporal o espacial entre el
punto y el plano. Existen trescasos.
– T < 0 entonces la dirección del rayo y de la normal iguales
– T = 0 cero son perpendiculares.
– T > 0 representa que si existe choque.
• No es necesario hacer la división sino comparar los signos
de numerador y denominador (aunque se puede hacer).
Contacto esfera-plano
• Calcular punto de choque tanto en la esfera como en el
plano.
Punto de colisión de la
esfera
Normal
Reverse...
Regístrate para leer el documento completo.