Projekt zaliczeniowy

Termin oddania 2017.02.05 24:00 na mail marian.dovgialo@fuw.edu.pl

 

Zadanie polega na napisaniu programu symulującego zachowanie sieci 100 na 100 z kulek 100 gramowych, połączonych sprężynkami o naturalnej długości 1 cm, z pewnym współczynnikiem sprężystości k.

Program powinien zapytać użytkownika o przesunięcie (w x i y od pozycji spoczynkowej) jednej jednej z kulek (pytając użytkownika o jej indeks - pozycję w sieci w pionie i poziomie. A następnie symulować 10 sekund ruchu takiej sieci z krokiem symulacji 0.01s. Zakładamy, że kulki na bokach sieci są zamocowane i się nie ruszają, szybkości początkowe kulek są równe 0. Każdy krok ma być zwizualizowany i zapisany do ponumerowanego obrazku, wystarczy wizualizacja tylko samych kulek, bez sprężyn.

 

Na każdą kulkę działa siła, wypadkowa siłom 4 sprężynek. Dla przypomnienia siła sprężyny: F = k Δl,

gdzie Δl - wydłużenie lub skrócenie sprężyny, równolegle z osią sprężyny.

Ruch kulki, można rozbić na dwie składowe x i y i zapisać w takich pseudo rekurencyjnych równaniach:

 

x = x + vx * dt

y = y + vy * dt

vx = vy + ax*dt

vy = vy + ay*dt

ax = Fx/m

ay = Fx/m

gdzie po lewej jest nowa pozycja/szybkość, dt - to krok symulacji, Fx Fy- siła wypadkowa rzutowana na osie x y.

Mając pozycje kulek można obliczyć składowe siły jednej sprężyny:

Fx = k (((x1-x)2 + (y1-y)2)0.5-l0) * (x1-x)/((x1-x)2 + (y1-y)2)0.5

Fy = k (((x1-x)2 + (y1-y)2)0.5-l0) * (y1-y)/((x1-x)2 + (y1-y)2)0.5

gdzie l0 - długość spoczynkowa sprężyny, x y - pozycja kulki dla której obliczamy siłę, x1, y1 - pozycja kulki do której jesteśmy podłączeni.