Integradores Numéricos en Simulación
En este tema trataremos las bases de la simulación de objetos, teniendo en cuenta sus coordenadas de posición, aplicaremos el parámetro del tiempo para calcular la velocidad y la aceleración de estos a lo largo de una trayectoria definida por una función (curva).
En el ejercicio de la montaña rusa que aparece en el vídeo tratamos dos casos en concreto:
Intervalo a velocidad constante.
Intervalo con aceleración constante.
Para conseguir este tipo de movimiento tenemos que tener en cuenta los siguientes parámetros:
Y empleando ecuaciones basadas en senos o cosenos, podremos definir movimientos circulares como los que se muestran en el vídeo.
Ejemplo de aplicación en el código:
Donde las variables pos.x y pos.y corresponden a las coordenadas del objeto al cuál le queremos dar una trayectoria circular.
El movimiento de un oscilador (movimiento armónico simple) es el resultado de aplicar una función determinada que nos devuelve una onda.
En este caso aplicamos la función osciladora a las coordenadas “y” del movimiento, generando una gráfica similar a la siguiente:
Aplicando esta estructura de datos que nos ofrece Processing, podemos almacenar y manipular fácilmente nuestras variables de movimiento. Por ejemplo, en el ejercicio del lanzador de bolas (bubbleshooter) muestra una idea inicial de como aplicar los PVector para almacenar la dirección, la posición y la velocidad del objeto.
Para la simulación del movimiento de los objetos no basta con aplicar una función que cambie los valores de forma periódica y ya está. Hay que tener en cuenta más factores: la masa, para la medida de la inercia; el momento, que nos informa de la cantidad de movimiento ; la fuerzas, que son las que mueven nuestros objetos.
Para simular las físicas que influyen sobre los objetos como los de la imagen superior, tenemos que resolver Ecuaciones Diferenciales Ordinarias (EDO). Estas definen la tasa de cambio de nuestra variable de posición en función de los valores obtenidos por la derivada a lo largo del tiempo en la simulación.
Sin embargo estas posiciones no son exactas, al tratarse de cálculos realizados por computador la aplicación de las derivadas nos proporcionarán aproximaciones numéricas.
Estas EDO siguen la siguiente base:
Que en código se traduce en:
Los cual nos dice que para calcular el siguiente paso de simulación, la posición en i+1 será la posición actual en i, más la pendiente h multiplicada por el tamaño del paso.
Será el valor de la pendiente h la que estimaremos para extrapolar el movimiento a partir del valor de la posición anterior.
será la primera derivada quien nos ofrezca la aproximación directa de la pendiente en el punto a evaluar:
Solo tenemos en cuenta una derivada, la del punto siguiente.
Empleamos dos derivadas para aproximar la pendiente del intervalo, la del punto siguiente y la actual. El punto extrapolado se calcula a partir de la media de ambas derivadas.
También llamado método del Punto Medio, pues obtiene las coordenadas del punto siguiente aplicando las derivadas en
el punto de la primera derivada y en el punto medio del intervalo.
Calculando la pendiente en el punto inicial podemos estimar k1.
Con k1 estimamos un nuevo punto localizado en la mitad del intervalo.
Con este punto medio calculamos la nueva pendiente k2.
Finalmente será k2 la que aplicaremos en el cálculo de la posición siguiente.
se sigue la misma lógica que en el método del punto medio, la diferencia está en el número de puntos utilizados para realizar la aproximación.
En este caso tenemos 4 puntos (k1,k2,k3 y k4). El punto final se obtendrá a partir de una media entre estos valores:
En nuestras simulaciones tenemos que tener en cuenta las distintas fuerzas que entran en juego cuando los objetos se mueven en el espacio. Nosotros vamos a analizar dos casos determinados para estudiar varias fuerzas:
Descomponemos las fuerzas en normal y tangencial al plano del movimiento.
Atendiendo a la Ley de Hooke:
En este modelo tenemos que aplicar la amortiguación del muelle, sin ella el movimiento de este sería infinito en el tiempo.