Strona głównaArtykułySieć masowo-springowa

Sieci masowo-springowe: Zasada Hooksa, integracja Verleta i propagacja dźwięku

Jak zasada Hooke’a i integracja Verleta pozwalają na propagację dźwięku w sieci powiązanych mas, sprawiając, że system pozostaje numerycznie stabilny.

mysimulator teamZaktualizowano — czerwiec 2026≈ 8 min czytania▶ Otwórz symulację

Sieć utrzymana prawem Hooke’a

System masowo-springowy jest dokładnie taka jak sugeruje nazwa: punktowe masy połączone sprężynami, każda z sprężyn działająca według prawa Hooke’a, F = −k·x, gdzie x to odcinek, o jaki sprężyna została rozciągnięta lub zacisnięta w stosunku do swojej długości spoczywania, a k to jej masywność. Połączenie wystarczająco wielu takich systemów w łańcuchu, siatce, krąg lub gwiazdowym topologii daje sieć zdolną do niezwykle bogatej zachowania kolektywnej — fale przemieszczające się po łańcuchu, siatkę, która drży jak skrzydło instrumentu, a gwiazdę oscylującą wokół swojej długości spoczywania — wszystko to z tego samego jednowymiarowego prawa siły stosowanego na każdą krawędź.

for each spring (mass A, mass B, restLength, k):
    delta   = posB - posA
    stretch = length(delta) - restLength
    force   = k * stretch * normalize(delta)
    applyForce(A,  force)
    applyForce(B, -force)     // equal and opposite, Newton's third law
add damping proportional to relative velocity along the spring
demo na żywo · powiązana symulacja● LIVE

Dlaczego integracja Verleta, a nie podejście proste

Przekształcenie tych sił w ruch oznacza integrowanie drugiego zasady Newtona. Prosta opcja — eksplikatywny Euler, przesuwając każdy masę przy użyciu jej starych prędkości — tarczy się na dodawanie energii na każdym kroku i sprawia, że sieć sprężyn rozrasta się w niepokojące, rosnące oscylacje, zwłaszcza dla sprężyn sztywnych lub z dużym przepustnikiem czasu. Ten model zamiast tego używa integracji Verleta: zamiast przechowywania prędkości explicitnie, każda masa pamięta swoją poprzednią pozycję, a nastepna pozycja jest bezpośrednio ekstrapolowana na podstawie dwóch ostatnich:

x_next = 2·x_current − x_previous + a·h² (a = siła / masa) // prędkość jest implikowana, nigdy nie przechowywana direct: v ≈ (x_current − x_previous) / h Ta forma, nazywana czasami Verletem pozycyjnym lub Störmer-Verlet, jest ulubioną metodą dla rozwiązań sprężyn i tkanin ze względu na bardzo praktyczny powód: ograniczona łatwość zastosowania ograniczeń i przetrzaskiwania. Pociągnij masę myszką — ustawiasz jej pozycję bezpośrednio — nie ma osobnej wartości prędkości do harmonizacji, ponieważ prędkość jest zawsze automatycznie obliczana na podstawie różnicy dwóch przechowywanych poziomów w następnym kroku. Jest także symplektyczna, co oznacza, że zachowuje sztuczną energię ograniczoną przez długoterminowe uruchamiania zamiast uciekać, co dokładnie utrzymuje sieć sprężyn w równowadze przekonującej i niezawodnej, a nie zdobywającej niespodziewanej energii.

x_next = 2·x_current − x_previous + a·h²      (a = force / mass)

// velocity is implied, never stored directly:
v ≈ (x_current − x_previous) / h

Topologia decyduje o tym, co sieć może zrobić

Topologia łańcuchowa — maszyny połączone w jednej linii od początku do końca — jest najprostszym uogólnieniem na widoczne propagowanie fal: podnoszenie jednego konca prowadzi do widocznego przemieszczenia się przesunięcia po łańcuchu z prędkością zależną od masy każdego węzła i sprężystości sprężyny, dyskretny analogon fali na drapaczu. Topologia siatkowa rozszerza tę samą ideę do dwóch wymiarów, pozwalając falce w centrum rosnąć w okręgiach, podobnie jak na skrzydłach gitary lub trampolinie. Zamykając łańcuch w pętlę, tworzy się krąg, co pozwala falom, które obiegają go, na konstruktywny interferencji ze sobą. Gwiazda — wiele mas zewnętrznych połączonych do wspólnego centrum i często ze sobą — zachowuje się bardziej jak pojedyncze elastyczne ciało, które drga i osiąga równowagę jako całość, przydatna dla kształtów typu ciała miękkiego.

Sprężystość (k) i tłumienie są dwiema przyciskami, które najbardziej zmieniają sposób, w jaki sieć się czuje. Wysoka sprężystość z niskim tłumieniem powoduje szybkie, sprężyste, prawie sztywne ruch, gdzie fale przechodzą szybko i barely stracają energię; niska sprężystość z wysokim tłumieniem prowadzi do wolnego, klepującego się osiągania równowagi podobnego do glinu. Ponieważ integracja Verleta jest niezależnie przyjazna sprężynom sztywnym niż metoda Eulera expliktywna, ta symulacja może naciskić na sprężystość prawie do góry i nadal pozostawać numerycznie stabilna w ramach szybkości klatek w czasie rzeczywistym.

Często zadawane pytania

Dlaczego symulacja używa integracji Verleta zamiast bezpośrednio stosować siły?

Stosowanie najwyraźniej obwodowego metody (Eulera explikite) do przesunięcia pozycji i prędkości w każdym klatce daje troszeczkę więcej energii, co prowadzi do rozszerzania się oscylacji siatkowej zamiast ich ulec spokojnemu ustalaniu — zwłaszcza przy starych sprężynach. Integracja Verleta jest znacznie stabilniejsza dla tego typu systemu i sprawia, że przeciąganie masy jest proste, ponieważ należy ustawić tylko pozycję, nigdy osobno prędkość.

Dlaczego wibruje nicią w dół zamiast wszystko się poruszać jednocześnie?

Każda masa odczuwa siły tylko z sprężyn bezpośrednio podłączonych do niej, więc perturbacja na jednym koncie musi propagować się masę po masie longitudańowo wzdłuż nici, zajmując pewien czas na każdą ramkę — dokładnie dyskretna wersja tego, jak prawdziwe wibruje przechodzi przez ciąg lub sznur.

Jakie jest różnice między topologią łańcucha, siatki, koła i gwiazdy?

Różnią się one jedynie tym, które masy są połączone sprężynami: łańcuch to jedna linia do obserwacji propagacji wibrujących liniowych, siatka rozszerza to na dwie wymiary jak skórę naczynia, koło jest zamkniętą pętlą, gdzie wibry mogą się zderzać ze sobą, a gwiazda łączy wiele mas zewnętrznych z wspólnym centrum, tworząc pojedynczy drapieżny kształt podobny do ciała ciepła.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Spring-Mass Network i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację Spring-Mass Network

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)