Войти
ПрограммированиеФорумОбщее

Уравнение маятника

Страницы: 1 2 Следующая »
#0
1:26, 27 авг. 2009

Нужно сделать анимацию маятника, физику подключать е хочется.
То есть необходимо, чтобы по параметрам (длина маятника, точка подвеса, время) и может быть еще каким-то эвристическим, мы получали текущие координаты маятника (позицию)..

То что придумал опытным путем выглядит так:

x = sin(time)
y = cos(time)*cos(time)*k

коэффициентом k - регулируем высоту до подходящей (k~0.2)

Выглядит хорошо, но проблема в том, что вращение происходит не относительно точки подвеса.

Есть ли какие-либо "простые" решения анимирования маятника?


#1
2:02, 27 авг. 2009

Период маятника зависит только от его длины. Амплитуда может быть любая, период должен сохраняться.
Если хочется без физики то правдоподобно выглядит простое качание Angle = sin(t * speed) * amplitude; и точку вращения ставишь в точке подвеса маятника.

#2
2:19, 27 авг. 2009

Сделаю маятник. С правильной физикой. Недорого. ЯП на выбор: C++, Delphi, C#, etc.

Изображение

#3
8:01, 27 авг. 2009

  x = sin(time) * A
  y = L - x * |sin(time)|
  Может так?

#4
8:15, 27 авг. 2009

А может все-таки найти в гугле/википедии хотя бы одну форумулу и разобраться с физикой? Там всего-то одно диф.уравнение, которое рершается ОЧЕНЬ просто.

gamePhysics
Zefick
Что вы придумываете?

#5
8:29, 27 авг. 2009

Sergio666
  Если Вы не заметили, то первое моё уравнение как раз и является решением этого дифура.
  А второе уже на основе первого.

#6
10:32, 27 авг. 2009

а без триганометрических функций? //одно умножение и одно сложение

#7
12:20, 27 авг. 2009

  sin(time) = time, если при маленьких амплитудах. Но тогда получится, что маятник двигается не по дуге, а по параболе. В принципе уместный фейк.

#8
12:22, 27 авг. 2009

kvakvs
>Если хочется без физики то правдоподобно выглядит простое качание Angle = sin(t * speed) * amplitude;
>и точку вращения ставишь в точке подвеса маятника.
Спасибо за подсказку. Немножко переделав твой вариант получилось вот так:
angle = sin(time*speed)*amplitude;
x = cos(angle)*len;
y = sin(angle)*len;

Zefick
Без модуля движение похоже, но всетаки, как и в моем посте, не относительно центра подвеса.

Sergio666
>А может все-таки найти в гугле/википедии хотя бы одну форумулу и разобраться с физикой?
>Там всего-то одно диф.уравнение, которое рершается ОЧЕНЬ просто.
Я не сомневаюсь, что это ОЧЕНЬ просто (для тебя), но мне требовалось простое (для меня) эвристическое уравнение, что я и получил от кваквса.

Всем спасибо за ответы.

#9
13:11, 27 авг. 2009

Если я правильно понял, то нужно уравнение движения физического маятника. На память помню только уравнение периода. Позже, если надо, могу поискать уравнение нахождения угла отклонения от времени.

T=2*M_PI*sqrt(I/m*g*a);

Где
M_PI - 3.14,
sqrt - квадратный корень из
I - момент инерции маятника относительно оси вращения
m - масса маятника
g - ускорение свободного падения
a - расстояние от точки подвеса до центра масс.

#10
13:18, 27 авг. 2009

Хотя, вот нашёл:
Изображение

Бэта - угловое ускорение.

#11
13:18, 27 авг. 2009

MarkoPolo
> если надо, могу поискать уравнение нахождения угла отклонения от времени.
  Я его уже написал.

T=2*M_PI*sqrt(L/g)
  Такое проще. Нафига автору ещё момент инерции считать, хотя для математического маятника он равен m*L^2

#12
13:27, 27 авг. 2009

gamePhysics

Тогда моделируй из первых принципов!
Выпиши формулы и интегрируй методом Ньютона. Нужно интервал времени выбрать правильно. Точнее его можно завязатъ на скорость и элементарный путь. Т.е. он может варьироваться.
Время от времени делаем калибровку на полную энергию, так как учитываем погрешность связанные с вычислениями. :)
Приведенные выше формулы справедливы для малых смещений маятника в силу допущений.

#13
14:21, 27 авг. 2009

свободные колебания      - одно умножение и одно сложение
вынужденные колебания - одно умножение и два сложения

#14
15:13, 27 авг. 2009

Tonal
  Слушай ты уже решайся - скажешь, или нет, как это делать. А выпендриваться все могут.

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.