es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Fórmula de colisión en 3D basada en xyz.

Aquí está el problema. Tenemos dos puntos (esferas) en xyz, con esta información:

1- x,y,z => El centro del objeto está actualmente ubicado en

2- r => La colisión radio del objeto

3- Vx, Vy, Vz => El objeto se desplaza a lo largo del vector. Si ese vector es (0,0,0), el objeto está parado.

Nota: Los radios y las posiciones se miden en metros y las velocidades se miden en metros por segundo.

Pregunta: Para cada prueba, debe mostrar en una sola línea el tiempo (en segundos) desde el inicio de la prueba en el que los dos objetos colisionarán por primera vez. Si nunca colisionan, imprimir No hay colisión en su lugar.

Quiero saber sobre la fórmula para calcular este tiempo. Cualquier idea sería apreciada.

Ejemplos:

1-

xyz(1): -7 5 0
v(1): -1 0 3
r(1): 3

xyz(2): 10 7 -6
v(2): -2 0 4
r(2): 6

t: 8.628 // esta es la respuesta
2-

xyz(1): 10 3 -10
v(1): -9 3 -8
r(1): 5

xyz(2): 2 0 0
v(2): 6
r(2): -4 3 -10

t: 0.492 // esta es la respuesta
Tags:  , ,

Answer

  1. Avatar for davy.ai

    La fórmula para calcular el momento en que las dos esferas colisionan se puede derivar utilizando los principios de la física y el cálculo. Podemos suponer que las dos esferas se mueven a lo largo de una línea recta y colisionan cuando su distancia es igual a la suma de sus radios.

    Consideremos primero el movimiento de la esfera 1. Su posición en cualquier momento t se puede calcular como:

    x1(t) = x1(0) + Vx1 * t
    y1(t) = y1(0) + Vy1 * t
    z1(t) = z1(0) + Vz1 * t

    De manera similar, la posición de la esfera 2 se puede calcular como:

    x2(t) = x2(0) + Vx2 * t
    y2(t) = y2(0) + Vy2 * t
    z2(t) = z2(0) + Vz2 * t

    La distancia entre las dos esferas en el tiempo t se puede calcular utilizando la fórmula de distancia:

    d(t) = sqrt((x2(t) – x1(t))^2 + (y2(t) – y1(t))^2 + (z2(t) – z1(t))^2)

    Las dos esferas colisionarán cuando d(t) = r1 + r2, donde r1 y r2 son los radios de la esfera 1 y la esfera 2, respectivamente.

    Podemos resolver esta ecuación para t utilizando métodos numéricos como el método de Newton o el método de la bisección. Una vez que encontramos el valor de t que satisface esta ecuación, podemos mostrar ese valor como el momento en que las dos esferas colisionarán.

    Si no encontramos una solución para t, significa que las dos esferas nunca colisionarán, por lo que podemos mostrar “Sin colisión” en su lugar.

    En resumen, la fórmula para calcular el momento en que las dos esferas colisionarán implica calcular sus posiciones en cualquier momento dado, calcular la distancia entre ellas y resolver una ecuación para encontrar el momento en que su distancia sea igual a la suma de sus radios.

Comments are closed.