Całość się aktualizuje z jakimś tam skokiem - czyli zakłada że minęło ileś tam czasu.
Kolejne założenie, że w tym czasie co się całość aktualizuje to nic się nie zmienia ( może nie do końca - wszystko się w tym czasie zmienia liniowo - czyli jeśli okręt akurat skręca to najpierw zmieniam mu położenie tak jakby szedł prosto a potem zmieniam mu "skręt" o jakąś tam część stopnia tak jakby stał w miejscu i obracał się w ciągu osi. Pociski przelatują taki odcinek jakby szły po prostych i nie zwalniały, potem odpowiednio są aktualizowane zmiany ich prędkości, kierunki itd ).
W tej sytuacji program naprawdę NIE wie co będzie za chwilę. Może to jakoś przewidywać zakładając że wszystko będzie odbywało się jak do tej pory, ale w praktyce to nie zadziała. Z matematyki wiadomo że w przypadku ogólnym nie da się rozwiązać analitycznie równania stopnia większego niż bodaj 4. U mnie są równania większych rzędów. Obliczenia numeryczne mają to do siebie, że dopóki nie policzysz do końca całej procedury to nie będziesz wiedział jaki będzie wynik.
Może inaczej - nie ma ogólnego wzoru na położenie pocisku w całej trajektorii. Czyli nie ma tak, że sobie weźmiesz jakiś wzór podstawisz tam prędkości początkowe, czas lotu i od razu dowiesz się gdzie pocisk będzie za 15 sekund. Nie. Musisz krok po kroku policzyć ze skokiem jakimś tam kolejne pozycje żeby dostać ostateczną. A żeby było śmieszniej to jak skok będzie inny to pozycja końcowa inna ( czyli - aktualizujesz pozycje w wyliczeniach co powiedzmy 0,1 sekundy to pociski dolecą na 20 km. A jak co 0,05 sek to już np. na 19,5 km, bo trajektoria policzona dokładniej ) itd itp.
Analogicznie są liczone parametry położenia kadłuba na wodzie.
Nie mam jakiegoś wzoru ogólnego na zachowanie się kadłuba na fali w zależności od wysokości metacentrycznej rozkładu mas itd.
Nic z tych rzeczy.
Cały kadłub jest podzielony na pomieszczenia. Każde pomieszczenia ma wektorek wyporności ( który się zmienia i to ostro w zależności od aktualnego przechyłu czy zanurzenia ) oraz wektorek masy. Wektorek masy.
Wszystkie te wektorki ze wszystkich pomieszczeń ( oraz ze śrub - każda na swój, ze stetrów czy innych sił jak choćby wystrzału dział ) są sumowane i wychodzi z tego siła wypadkowa działająca na okręt w danym momencie. Potem zakładam, że ta siła jest liniowa i się nie zmienia ( dla bardzo krótkiego przedziału czasu jest to wystarczająco dobre przybliżenie ) i zgodnie z tym aktualizuję położenie kadłuba. Jak wyporność większa niż ciężar, to kadłub idzie odpowiednio w górę ( z odpowiednim przyśpieszeniem które zależy od jego masy itd ), jak odwrotnie to zaczyna działać siła w dół. Jeśli miał odpowiednią prędkość w górę to nie zacznie spadać od razu, tylko najpierw siła go wyhamuje, potem zacznie spadać. Jak w międzyczasie przyjdzie fala pod niego i go podeprze, to znowu w górę itd.
Cały rozkład mas zmienia się w zależności od uszkodzeń.
Jak gdzieś jest dziura pod linią wodną to do odpowiedniego pomieszczenia wlewa się woda. O tyle zwiększa się masa pomieszczenia. Aż do pełnego wypełnienia.
Jak dziura powyżej linii wodnej to woda się wylewa.
Program naprawdę nie bardzo jest w stanie określić czy przy tych dziurach które ma to okręt zatonie czy nie.
Jeśli dziur będzie dużo, ale wysoko to nie zatonie.
Ale jeśli będą duże fale, to każda wchodząca na kadłub spowoduje lekkie wlanie się wody do kadłuba. Przy czym dolina wcale nie spowoduje wylania się takiej samej ilości wody - jak dziura wysoko w pomieszczeniu to więcej się wleje niż wyleje.
Jakoś nie widzi mi się pisania analizatora ilości wlanej wody.
Jak robiłem, że pomieszczenia same się nie rozszczelniają, to miałem fajne przypadki jak okręt poszedł dziobem w dół, a potem zatrzymał się z 3/4 zatopionym kadłubem prawie w pionie i tak sobie został w pozycji równowagi.
Potem uprościłem sobie sprawę i przy odpowiednio dużym przechyle rozszczelniają się siłownie i magazyny amunicyjne. To przyśpiesza proces tonięcia, ale też nie zawsze.
Ostatecznie warunek zatonięcia dobiorę doświadczalnie. Jakaś baza danych z pojedynków już jest.
Ależ to podstawowa zasada systemu AoN. Inaczej nie ma on sensu, bo topisz taki okręt przy pomocy 40 mm działka boforsa dziurawiąc mu miękkie części poza cytadelą. Oczywiście trzeba by jeszcze odpowiednio się zbliżyć z tym działkiem i mieć dużo samozaparcia, ale da się.Musashi i Yamato miały taki zapas pływalności, że zalanie wszystkich (!) pomieszczeń poza cytadelą pancerną pozwalało utrzymać się na powierzchni
A w każdym razie użycie większej ilości ciężkich pocisków burzących załatwiło by sprawę pancernika AoN który by nie spełniał tego warunku bardzo szybko
EDIT:
Innymi słowy - komputer nie wie czy mu okręt zatonie dopóki nie wleje się do niego wystarczająco dużo wody. Tak na dobrą sprawę to nawet pełna przewrotka do góry dnem nie gwarantuje zatonięcia. Miałem przypadki utrzymywania się na wodzie okrętów do góry dnem przez parę godzin.
Oczywiście nie strzelały
