slej slej
491
BLOG

Symulacja momentów sił podczas efektu Dżanibekowa.

slej slej Nauka Obserwuj temat Obserwuj notkę 24

    Ponieważ nikt nie kwapił się do symulacji, zrobiłem to sam. Poniższa symulacja jest bez żadnych efektów specjalnych, dlatego też widz który nie zna zagadnień mechaniki obrotu bryły sztywnej może niewiele z niej zrozumieć. Postaram się w najbliższym czasie zrobić animacje z tłumaczeniem tak aby mogli ją też zrozumieć nie Fizycy.



Opis zjawiska jest w moich poprzednich notkach

http://przestrz.salon24.pl/771163,mechanika-obrotu-punktu-bryly-sztywnej

http://przestrz.salon24.pl/774992,czym-sa-wzory-eulera


Co ciekawe szukając materiałów natknąłem się na jeszcze jednego miłośnika efektu Dżanibekowa który jak wynika z filmiku również ma ciekawe wyniki.


kod do symulacji

from visual import *

masa11=sphere(pos = vector(1,0,0), radius =0.1, color = color.red)
masa12=sphere(pos = vector(-1,0,0), radius =0.1, color = color.red)
masa21=sphere(pos = vector(0,1,0), radius =0.1, color = color.blue)
masa22=sphere(pos = vector(0,-1,0), radius =0.1, color = color.blue)
cylinder(pos = masa11.pos, radius =0.01, axis=masa12.pos-masa11.pos)
cylinder(pos = masa21.pos, radius =0.01, axis=masa22.pos-masa21.pos)

Ix=1
Iy=2
Iz=3

wx=0
wy=1
wz=0.01

kropka=sphere(pos=vector(wx,wy,wz), radius=0.01, color= color.blue, make_trail=True)
kropka2=sphere(pos=vector(wx,wy,wz), radius=0.01, make_trail=True)
omega=arrow(axis=vector(0,0.01,0), color= color.blue)
epsilon=arrow(axis=vector(0,0.01,0))
epx=arrow(axis=vector(0.01,0,0), color= color.yellow)
epy=arrow(axis=vector(0,0.01,0), color= color.green)
epz=arrow(axis=vector(0,0,0), color= color.orange)

dt=0.05
t=0

while t<830:
    rate(100)

    ex=((Iy-Iz)*wy*wz)/Ix
    ey=((Iz-Ix)*wz*wx)/Iy
    ez=((Ix-Iy)*wx*wy)/Iz
    
    wx=wx+ex*dt
    wy=wy+ey*dt
    wz=wz+ez*dt
#    omega.axis=vector(wx,wy,wz)
    kropka.pos=vector(wx,wy,wz)
    kropka2.pos=vector(ex,ey,ez)
#    epsilon.axis=vector(ex,ey,ez)
    e=sqrt((ex*ex)+(ey*ey)+(ez*ez))    
    epx.axis=vector(ex,0,0)
    epy.axis=vector(0,ey,0)
    epz.axis=vector(0,0,ez)

    w=sqrt((wx*wx)+(wy*wy)+(wz*wz))
#    print t, w
#    print t, w, e
    print t, ex, ey, ez
    t=t+1

slej
O mnie slej

Wiem że nic nie wiem a to już coś

Nowości od blogera

Komentarze

Inne tematy w dziale Technologie