symulacja bryły sztywnej wprost z Eulera

0

Mamy taki skecz w ramach prostej swobodnej rotacji ciała:

co to ma być?

Da radę w ogóle coś takie wyliczyć z równań Eulera, czy też to tylko... jakieś nieporozumienie?

0

OK, może trochę niejasno opisałem sprawę.

Na czy polega problem?

Na tym że mamy te trzy równania Eulera w wersji swobodnej:
https://en.wikipedia.org/wiki/Euler%27s_equations_(rigid_body_dynamics)

więc po przekształceniu (dla M=0) obliczamy coś takiego:
w1' = (I2-I3)/I1 w2w3 = a w2w3;
w2' = (I3-I1)/I2 w3w1 = b w3w1;
w3' = (I1-I2)/I3 w1w2 = c w1w2;

a,b,c są stałymi, bo I1, I2 i I3 są stałe - momenty główne bryły.

Zatem tu obliczamy coś takiego, w wersji wektorowej:
w' = (w1,w2,w3)' = (a w2w3, b w1w3; c w1w2);

Ustawiam jakiś tam bączek w kształcie T, który kręci się np. tak: |-------> w
i trochę to nierówno rozkręcam, np.: w-start = (6, 0,1);

Następnie obliczamy to zwyczajnie, np. za pomocą RK4,
i po 100 krokach otrzymujemy wektorek w stylu: w_100 = (1, 5, 8);

no i co to ma być - jak jest ustawiony teraz ten bączek w przestrzeni?

0

A czemu miałoby się nie dać wyliczyć? Jeśli masz dobrze wyliczony moment bezwładności (o ile da się wyliczyć, co dla figur nieregularnych czasem praktycznie jest niemożliwe, ale dla figur regularnych symetrycznych jest proste do wyznaczenia, no prawie...) to każdy ruch obrotowy (czy złożenie ruchu obrotowego i posuwistego) da się wyliczyć.

Najprościej wyznaczyć ruch obrotowy w przestrzeni 2d, w 3d jest nieco trudniej, ale też się da, moment bezwładności staje się macierzą 3x3.

Sam wektor w nie pomoże w ustaleniu położenia ciała, potrzebne jest jeszcze ustalenie kątów o jakie obrócone jest ciało w przestrzeni (w ruchu obrotowym patrzysz jak zmieniają się kąty wraz z czasem), pewnie ten twój wektor w to moment pędu (pewności nie mam), jeśli tak to możesz go powiązać z momentem bezwładności i prędkością kątową, a ją ze zmianami kątów.

Najlepiej to na początek popatrz się jak to wygląda w 2d.

0
czaffik napisał(a):

A czemu miałoby się nie dać wyliczyć? Jeśli masz dobrze wyliczony moment bezwładności (o ile da się wyliczyć, co dla figur nieregularnych czasem praktycznie jest niemożliwe, ale dla figur regularnych symetrycznych jest proste do wyznaczenia, no prawie...) to każdy ruch obrotowy (czy złożenie ruchu obrotowego i posuwistego) da się wyliczyć.

że co jest niemożliwe?
Moment bezwładności wyliczasz wprost z definicji:
r^2 dm, gdzie r jest odległością do osi obrotu.

W przypadku 3D masz zawsze jakieś trzy osie prostopadłe, i stąd: I1, I2, I3, jako momenty główne... itd.

Sam wektor w nie pomoże w ustaleniu położenia ciała, potrzebne jest jeszcze ustalenie kątów o jakie obrócone jest ciało w przestrzeni (w ruchu obrotowym patrzysz jak zmieniają się kąty wraz z czasem), pewnie ten twój wektor w to moment pędu (pewności nie mam), jeśli tak to możesz go powiązać z momentem bezwładności i prędkością kątową, a ją ze zmianami kątów.

Jeśli są potrzebne kąty no to wystarczy chyba podstawić sobie coś takiego:
alfa'' = w1', beta'' = w2', gamma'' = w3'';
plus warunek początkowy, np. taki: (alfa, beta, gamma) = (0,0,0);

Problem polega chyba na tym jak przeliczyć potem te kąty na... coś sensownego.

0

Problem polega chyba na tym jak przeliczyć potem te kąty na... coś sensownego.

No właśnie... wszystko się da tylko z tymi kątami problem, bo łatwo wyliczyć z prędkości kątowej zmiany kątów (od jakichś wartości początkowych, np 0, 0, 0) o ile prędkość kątowa jest stała, (lub przyspieszenie też), ale jeśli np przyspieszenie kątowe też się zmienia wtedy chyba pozostaje sprawdzać zmiany wartości co jakiś mały czas (najlepiej oczywiście nieskończenie mały...).

0
czaffik napisał(a):

Problem polega chyba na tym jak przeliczyć potem te kąty na... coś sensownego.

No właśnie... wszystko się da tylko z tymi kątami problem, bo łatwo wyliczyć z prędkości kątowej zmiany kątów (od jakichś wartości początkowych, np 0, 0, 0) o ile prędkość kątowa jest stała, (lub przyspieszenie też), ale jeśli np przyspieszenie kątowe też się zmienia wtedy chyba pozostaje sprawdzać zmiany wartości co jakiś mały czas (najlepiej oczywiście nieskończenie mały...).

chyba normalnie to obliczamy, tyle że zamiast równań:
w' = (w1,w2,w3)' = (a w2w3, b w1w3; c w1w2);

obliczamy to samo ale w wersji: w = (alfa, beta, gamma)'

czyli zamiast tych 3 równań I-rzędu, mamy II-go rzędu... i tyle.

Pozostaje oczywiście problem: czym są te kąty: alfa, beta, gamma...
no ale to jest już chyba... oznaczone:
https://pl.wikipedia.org/wiki/K%C4%85ty_Eulera

zatem trzeba użyć tej macierzy na dole... no i to chyba będzie działać. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1