Как я могу воспроизвести этот эффект массы-пружины? [закрыто]

Я пытаюсь воспроизвести объект multiball этого приложения (вы можете скачать его, чтобы увидеть самостоятельно). Нажмите «e», если хотите эмулировать объект на своем компьютере (это программа для планшета). Вот видео в качестве примера , хотя я настоятельно рекомендую вам скачать редактор, чтобы иметь лучшее представление.

В основном у меня есть 3 параметра: (притяжение, трение и скорость) массовая пружина действует на 2D-план, при касании экрана мяч «вращается» вокруг точки контакта, насколько я понял, равновесие - это точка контакта палец на экране.

Если кто-нибудь может объяснить мне, как я могу воспроизвести этот эффект, я буду очень благодарен.

В качестве дружеского предложения вы с большей вероятностью получите людей, которые прочитают ваш вопрос, если вы предоставите больше объяснений в самом вопросе, вместо того, чтобы требовать, чтобы люди переходили по ссылке. Я думаю, что количество людей, которые будут устанавливать и запускать приложение, скорее всего, будет очень небольшим.
@ Андрей, спасибо за ваше предложение, к сожалению, я не очень хорошо разбираюсь в диаграммах, поэтому я оставил ссылку на видео. Лучший способ понять, как это работает, — загрузить приложение, я не смогу описать на правильном английском языке эффект, который я получаю, но я постараюсь изо всех сил и улучшу свой пост. Просто вопрос, вы собираетесь скачать приложение, чтобы посмотреть? заранее спасибо
Я описываю математическую и Python-реализацию системы пружинно-массового демпфера, которая работает здесь ; возможно, это будет полезно.
большое спасибо @Chemomechanics

Ответы (1)

Основываясь исключительно на просмотре нескольких секунд видео, не копаясь во внутренностях программного обеспечения, кажется правдоподобным, что мяч движется по экрану в соответствии с уравнениями движения для невынужденного двумерного затухающего гармонического осциллятора. Сдача Икс и у – координаты шара, а ( Икс е д , у е д ) быть положением равновесия пружины (которое, как вы сказали, является положением, в котором ваш палец касается экрана), уравнения движения

м Икс ¨ + γ Икс ˙ + к ( Икс Икс е д ) "=" 0 м у ¨ + γ у ˙ + к ( у у е д ) "=" 0
где м это масса мяча, γ - коэффициент, описывающий силу трения, и к - пружинная постоянная. Все эти три параметра должны быть настраиваемыми в коде. Пример в видео выглядит так, как будто он был передемпфирован, что означает, что γ 2 > 4 м к . ( В гиперфизике есть хорошее описание различных режимов поведения затухающего гармонического осциллятора)

Также необходимо указать начальные условия. Я предполагаю, что когда вы нажимаете на экран, симулятор решает приведенные выше уравнения с положением равновесия ( Икс е д , у е д ) является положением вашего пальца, а начальное положение и скорость — положением и скоростью мяча в момент касания экрана.

Наконец, последний ингредиент, который нам нужен, — это граничные условия, чтобы сказать, что делает мяч, когда он достигает края экрана. Я подозреваю, что код использует отражающие граничные условия, поэтому, например, в момент, когда Икс координата достигает минимального или максимального допустимого значения Икс , скорость в Икс знак изменения направления.

Чтобы на самом деле закодировать это, в общем случае вы можете использовать стандартные алгоритмы для интегрирования дифференциальных уравнений, такие как метод Рунге-Кутты . Или реализации этих методов на любом языке программирования, который вы используете. Для этой конкретной задачи, которая является линейной, вы можете использовать аналитическое решение (явную формулу, которая дает движение), например, см. Уравнение 72 заметок о волнах и колебаниях Ричарда Фицпатрика.

Икс ( т ) "=" А е γ т / 2 потому что ( ю т ф ) у ( т ) "=" Б е γ т / 2 потому что ( ю т ψ )
где ю "=" к / м и где А , Б , ф , ψ константы, выбранные для удовлетворения начальных условий (а именно, что начальное положение ( Икс ( 0 ) , у ( 0 ) ) и начальная скорость ( Икс ˙ ( 0 ) , у ˙ ( 0 ) ) соответствовать положению и скорости мяча в момент касания экрана).

большое спасибо за ответ, обязательно попробую то, что вы написали
@JSmith Вы, наверное, хотите выбрать м , γ , к поэтому система передемпфирована , что произойдет, если γ 2 > 4 м к .
Извините, но для меня это китайский язык. Мне очень жаль математику.
@JSmith В какой-то момент вам нужно будет выбрать значения для γ , м , к . Я рекомендую выбирать их так, чтобы γ 2 > 4 м к если вы хотите, чтобы поведение было похоже на то, что показано на видео.
ок, спасибо за совет.
если честно, я борюсь с частью дифференциального уравнения, есть идеи, как я могу добраться до сути? Любой уже реализованный код, на который я мог бы посмотреть. Спасибо
@JSmith Ваша проблема с пониманием того, откуда взялось уравнение или как его решить?