Historia pewnego kodu (cz. 1)

Opublikowane przez Heniek w dniu

Zaczęło się niewinnie, od jednej myśli. Ale, parafrazując pana B.B., jeśli nie powstrzymasz swojej głowy, ani się spostrzeżesz, kiedy cię poniesie. Czy Ty wiesz, że potężna księga to może być zapis tego samego myślenia, które naszło autora piętnaście lat wcześniej, na spacerze?

Pomysł był taki: zrobić animowaną prezentację grawitacji między planetami, jak w Układzie Słonecznym. Tak, żeby faktycznie było widać ruch planet wokół Słońca. I jak poszło, to ja wam mówię…

Najlepiej, żeby można było to zmieniać do woli: ilość planet, ich odległości i tak dalej. Dla uproszczenia użyłem JavaScriptu. Dla niewtajemniczonych – to język programowania, którego kod ładowany jest na Wasz komputer razem ze stroną i tam wykonywany. Współcześnie 95% [1] stron w Internecie ma jakiś skrypt w JavaScripcie. Można w nim pisać nawet w zwykłym notatniku, a wykonywać i testować w przeglądarce.

Są już takie gotowe rzeczy, ale chodziło o to, żeby rozkmina była od podstaw. Aby faktycznie to rozumieć i wiedzieć, że działa tylko na podstawie równań grawitacji. Zaczęło się od: dużego białego kwadratu (1) jako tła i czarnych kółek (2) jako “planet”. To znaczy, najpierw trzeba było ustalić sposób przechowywania danych. Powstały więc obiekty “masa” (3), odpowiadający jednej planecie i “symulacja” (4), która zarządza masami. Ale… żeby działało to w miarę realnie (albo: w ogóle działało), potrzeba było dodać skalę, czyli ustalać wielkie odległości, jak w Układzie Słonecznym (5). A jakiego rozmiaru planety? No, wiadomo, im cięższa, tym większa. Jeszcze więc masa i wyliczanie promienia na jej podstawie (6). Gęstość “planety”, to tutaj – niezbyt realistycznie – jeden (kg/dm3, to gęstość wody).

Tak w trzech etapach to powstawało: ustalanie pozycji, prędkości i sił. Pierwszy to niby nic, ale było losowanie pozycji dla każdego takiego kółka (7).

Przy drugim – dodaniu prędkości – zaczęły się schody, bo trzeba było zrobić animację. Prosto: wyświetlanie od nowa co określony czas (8). Potem poszło losowanie prędkości (na razie stałych, 9). Ale to może kosztować strasznie dużo obliczeń, a wyświetlać i tak nie ma sensu bardzo często. Stąd podział na obliczanie (50 razy na sekundę) i wyświetlanie (rzadziej, 10 razy na sekundę). To już 10. rzecz przy ciągłym sprawdzaniu, czy to działa!

Żeby na stronie jakoś to hulało, przydał się jeszcze przycisk resetowania całości (11). Jak to wyglądało? Ano tak:

A, jeszcze jedno: wrzucenie tego wszystkiego na stronę. Okazało się, że jest zakulisowy kłopot: biblioteka jQuery ze swoją standardową funkcją $(), co okazało się zabronione w WordPressie. Trzeba było się tego dowiedzieć, przejrzeć skrypt i zamienić tę funkcję na pełniejszą nazwę jQuery() (12). Brzmi zawile? Nie bardziej, niż cała reszta!

Słabo wygląda? Mało pokazuje? Ha, ciąg dalszy nastąpi!

[1] https://w3techs.com/technologies/overview/client_side_lang1uage/all, sprawdzono 2019-06-10.


0 Komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *