PDA

Просмотр полной версии : уравнение движения мат. маятника


Artch
08.11.2006, 23:04
Здраствуйте, мне нужно сделать математический нитяной маятник. Смоделировать кое-как движение получается, но дело в том, что требуется некая интерактивность - маятник можно будет перемещать, и подвешеный груз, соответственно с этим движением должен будеть совершать колебания, т.е по инерции. Сразу скажу что я не прошу дать мне решения, просто решил спросить у профессионалов какими методами пользоваться. Сначала я хотел выразить колебания напрямую через свойство _rotation, но теперь не уверен. Может лучше через cos и sin а потом зная их, вычислять угол наклона?

silin
09.11.2006, 00:37
глянь такую модельку для пружинки (mc -мувик):
var centerX=200,k=0.01,s=0,vx,mouseX;

function fly(){
vx=s+=(centerX-this._x)*k;
this._x+=vx;
}
function drag(){
vx=_xmouse-mouseX;
mouseX=_xmouse;
this._x+=vx;
}
mc.onEnterFrame=fly;
mc.onPress=function(){
mouseX=_xmouse;
this.onEnterFrame=drag;
}
mc.onRelease=mc.onReleaseOutside=function(){
s=0;
this.onEnterFrame=fly;
}
если мувику определить свойство, отвечающее за угол , а в сеттере/геттере вычислять его координаты на окружности, то получится тоже самое для маятника на ниточке

Жень Шень
09.11.2006, 11:59
Привет!
Смотри фрагмент урока.
Может то, что надо...

alkonaft
09.11.2006, 17:26
Tween.yoyo решает.

Artch
10.11.2006, 18:39
а как вычислять угол, если, допустим известен косинус и синус угла?

Dendroid
10.11.2006, 19:26
Math.atan2(cos,sin);

Kikasso
15.11.2006, 06:11
Вот тебе архивчик, там маятник с гравитацией. Все качается и наглядно, можно менять гравитацию и пр.
Я запарился и сделал гравитацию и покадрово считал проекции сил, момент инерции и пр.
Ошибка, конечно, есть, но чем больше кадров в сек. тем меньше ошибка.
Скрипт, сразу говорю, чудовищный, ну так напиши свой!
P.S. написано на 5-м
В конце концов это вылилось в http://xstein.spb.ru/power/puskin.html.

Можно сделать математически точно, по формуле:
угол = amp * Math.sin( 2* 3.14 * time/period);
где amp = амплитуда колебания(угол), period - период колебания маятника, time соответственно время. Амплитуду хорошо бы понемножку уменьшать, умножая например на .99 Это колебательное уравнение материальной точки, из школьного курса физики, работающий пример в посте Жень Шеня. В этом случае все будет прекрасно, но мышкой в фазу попасть (чтобы раскачать) очень трудно. У меня не получилось.