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.