Через какое время демпфированная пружина достигнет определенной точки?

Я написал весеннюю симуляцию для пользовательского интерфейса на JavaScript, и все идет отлично, пользователи могут разбрасывать элементы пользовательского интерфейса повсюду и заставить их скользить туда, куда им нужно, с небольшим покачиванием.

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

Как я могу решить эту формулу для т так что я могу знать, когда весна пересечет определенную точку? Хотелось бы знать для всех типов пружин, но практически я работаю только со слегка задемпфированными. Моя текущая формула для нахождения смещения недодемпфированной пружины от ее равновесия:

ф ( т ) "=" е с т / 2 м * ( г 0 * с о с ( 4 м к с 2 * т 2 м ) + 2 м в 0 + с г 0 4 м к с 2 * с я н ( 4 м к с 2 * т 2 м ) )
где:

м : масса пружинящего объекта,

к : жесткость пружины, постоянная пружины,

с : демпфирующая сила,

г 0 : начальное расстояние пружинящего объекта от его равновесия в т я м е "=" 0 ,

в 0 : скорость пружинящего объекта после того, как пользователь отпустит его в т я м е "=" 0 ,

и т На время.

Могу ли я решить этот беспорядок для т скорее, чем ф ( т ) ?

Вам нужно будет решить это численно, я не думаю, что у него есть аналитическое решение
Вам не хватает скобок вокруг синуса и косинуса для умножения на экспоненту. Общее решение должно иметь вид
Икс "=" опыт ( β т ) ( А грех ( ю т ) + Б потому что ( ю т ) )
@JohnAlexiou Это тоже было прямо в коде ... спасибо, я пропустил это, отредактировал, чтобы отразить

Ответы (1)

Существует аналитическое решение, если привести уравнение к виду

Икс "=" р опыт ( ζ θ ) потому что ( θ 1 ζ 2 + ψ )

Решение для Икс "=" 0 является

θ "=" π 2 ( 2 я 1 ) ψ 1 ζ 2

где я "=" 1 , 2 , 3 . Время и угол связаны соотношением θ "=" ю н т , с ю н 2 "=" к м и коэффициент демпфирования ζ "=" с 2 м ю н .

Амплитуда р "=" А 2 + Б 2 и фаза ψ "=" арктический ( А / Б ) где А коэффициент грех ( ) и Б коэффициент потому что ( ) .

Спасибо за отличный ответ. Если это кому-нибудь поможет , вот график с нанесенными и переменными значениями . Еще раз спасибо, вы сэкономили мне массу времени, и я надеюсь, что когда-нибудь действительно пойму, что вы сделали.
@NorrisDuncan - я рад, что все получилось. Кажется, вы делаете то же самое, что и я в 80-х годах с BASIC на BBC Micro. Мне удалось сделать на этом карьеру, так что ура вам.