¿Cómo puedo reproducir este efecto masa-resorte? [cerrado]

Estoy tratando de reproducir el objeto multibola de esta aplicación (puedes descargarlo para verlo por ti mismo). Presione 'e' si desea emular el objeto en su computadora (este es un programa de tableta). Aquí hay un video como ejemplo, aunque le recomiendo encarecidamente que descargue el editor para tener una mejor vista.

Básicamente tengo 3 parámetros que son (atracción, fricción y velocidad) el resorte de masa actúa en un plano 2D, al tocar la pantalla la bola "gira" alrededor del punto de contacto, por lo que he entendido, el equilibrio es el punto de contacto de el dedo en la pantalla.

Si alguien pudiera explicarme cómo podría reproducir este efecto, estaría muy agradecido.

Solo como una sugerencia amistosa, es más probable que consigas personas que lean tu pregunta si proporcionas más explicaciones dentro de la pregunta en sí, en lugar de pedirles que sigan un enlace. Creo que es probable que la cantidad de personas que instalarán y ejecuten la aplicación sea muy pequeña.
@Andrew, gracias por tu sugerencia, desafortunadamente no soy muy bueno para los diagramas, es por eso que dejé un enlace de video. La mejor manera de entender cómo funciona es descargar la aplicación. No podría describir en un inglés adecuado el efecto que obtengo, pero haré todo lo posible y mejoraré mi publicación. Solo una pregunta, ¿vas a descargar la aplicación para echar un vistazo? gracias de antemano
Describo la implementación matemática y Python de un sistema de resorte-masa-amortiguador que hace "boing" aquí ; tal vez sirva.
muchas gracias @quimiomecanica

Respuestas (1)

Basado únicamente en ver un clip de video de unos pocos segundos, sin profundizar en las partes internas del software, parece plausible que la bola se mueva en la pantalla de acuerdo con las ecuaciones de movimiento para un oscilador armónico amortiguado 2d no forzado. Alquiler X y y ser las coordenadas de la pelota, y ( X mi q , y mi q ) Sea la posición del equilibrio del resorte (que dijiste que es la posición donde tu dedo toca la pantalla), las ecuaciones de movimiento son

metro X ¨ + γ X ˙ + k ( X X mi q ) = 0 metro y ¨ + γ y ˙ + k ( y y mi q ) = 0
dónde metro es la masa de la pelota, γ es un coeficiente que describe la fuerza de fricción, y k es la constante del resorte. Estos tres parámetros deben poder ajustarse en el código. El ejemplo en el video parece que fue sobreamortiguado, lo que significa que γ 2 > 4 metro k . ( La hiperfísica tiene buenas descripciones de diferentes regímenes de comportamiento para el oscilador armónico amortiguado)

También es necesario especificar las condiciones iniciales. Supongo que cuando toca la pantalla, el simulador resuelve las ecuaciones anteriores, con la posición de equilibrio ( X mi q , y mi q ) siendo la posición de su dedo, y la posición y velocidad inicial siendo la posición y velocidad de la pelota en el momento en que se tocó la pantalla.

Finalmente, el último ingrediente que se necesita son las condiciones de contorno para decir qué hace la pelota cuando llega al borde de la pantalla. Sospecho que el código utiliza condiciones de contorno reflectantes, por ejemplo, en el momento en que el X la coordenada alcanza el valor mínimo o máximo permitido de X , la velocidad en el X señal de cambios de dirección.

Para codificar esto, en general, puede usar algoritmos estándar para integrar las ecuaciones diferenciales, como un método de Runge-Kutta . O implementaciones de esos métodos en cualquier lenguaje de programación que esté utilizando. Para este problema específico, que es lineal, puede usar una solución analítica (fórmula explícita que da el movimiento), por ejemplo, consulte la ecuación 72 de las notas sobre ondas y oscilaciones de Richard Fitzpatrick

X ( t ) = A mi γ t / 2 porque ( ω t ϕ ) y ( t ) = B mi γ t / 2 porque ( ω t ψ )
dónde ω = k / metro y donde A , B , ϕ , ψ son constantes elegidas para satisfacer las condiciones iniciales (a saber, que la posición inicial ( X ( 0 ) , y ( 0 ) ) y la velocidad inicial ( X ˙ ( 0 ) , y ˙ ( 0 ) ) hacer coincidir la posición y la velocidad de la pelota en el momento en que toca la pantalla).

muchas gracias por tu respuesta, definitivamente probaré lo que has escrito
@JSmith Probablemente quieras elegir metro , γ , k por lo que el sistema está sobreamortiguado , lo que ocurrirá si γ 2 > 4 metro k .
lo siento pero esto es chino para mi soy realmente una lastima en matematicas
@JSmith En algún momento deberá elegir valores para γ , metro , k . Recomiendo elegirlos para que γ 2 > 4 metro k si quieres que el comportamiento sea similar al del video.
ah ok gracias por el consejo.
para ser honesto, estoy luchando con la parte de la ecuación diferencial, ¿alguna idea de cómo podría llegar al punto? Cualquier código ya implementado que pudiera mirar. Gracias
@JSmith ¿Su problema es comprender de dónde proviene la ecuación o cómo resolverla?