Nie ma bezpośredniego przełożenia obiektywów fotograficznych na teleskopy.
Ja akurat operowałem obiektywami kamer telewizji dozorowej, bo to dość dobrze znam.
Obiektywy co lepszych kamer potrafią mieć zbliżenie optyczne na poziomie 30+
Ale tak czy inaczej, to raczej obiektyw bardziej zbliżony do aparatu fotograficznego niż teleskopu, także uwagi przyjęte.
W końcu w kamerze jak potrzeba ekstremalnych czułości, to się powiększa przetwornik i więcej światła może padać.
W przypadku oka, powierzchnię przetwornika mam stałą
W uproszczeniu są dwa źródła rozrzutu 'balistycznego':
- po pierwsze są różnice w prędkości wylotowej, zależne od jakości prochu, dokładności posadowinia pocisku, ubicia prochu itd,
To jest
i różnice we własnościach balistycznych pocisków (masa, kształt), powodujące różne zachowanie w locie.
To też jest. Zapomniałem dodać. Znaczy jest „różnica kształtu”. Różnicę masy pominąłem. Owszem cięższy pocisk będzie wytracał prędkość wolniej, ale będzie też wylatywał z mniejszą prędkością. Na pewnym zakresie odległości te dwa parametry się znoszą. Na innych nie. W sumie może warto dorobić ( proste i mało pracochłonne do zrobienia ), tylko żebym to ja wiedział dokładnie jak zmiana masy wpłynie na zmianę prędkości wylotowej przy tym samym ładunku miotającym. Dla kilku, słownie kilku dział mam te dane, ale to chyba za mało żeby skalibrować parametr.
Pomyślę
- po drugie są różnice między zamierzonym kątem strzału i rzeczywistym kątem strzału wynikającym z ustawienia lufy (tu zapewne wypada dorzucić interferencję). W pierwszym przybliżeniu przekłąda się to na rozrzut odległości początkowo stały i opadający do zera (po łuku cosinusa) dla maksymalnego dystansu strzału.
To też jest, aczkolwiek to czy w wystarczającym ( albo nie wystarczającym ) stopniu modyfikuję ten kąt jest dyskusyjne.
Tak swoją drogą, to jak realnie na celność wpływa „droop”, czyli to wyginanie lufy pod własnym ciężarem. Wiadomo, przy strzale lufa zaczyna się „prostować”, coś jak wąż ogrodowy jak się przez niego puści wodę, aczkolwiek mniej spektakularnie, ale zasada ta sama. Im opadnięcie większe i lufa bardziej wiotka tym czynnik większy, ale da się to jakoś „zmierzyć”?
Pomijając to, że dane na temat tego ugięcia dział są tak skromne, że niemal zerowe. Dlatego nawet do tego nie podszedłem.
To może załatwię ( a może nie ) „współczynnikiem stabilności osadzenia dział w wieży”, że niby o jakąś tam losową wartość w zakresie podanym, lufy „skaczą” bo mechanizm podniesienia nie utrzymuje ich w ryzach. W sumie na jedno czy kąt się zmieni od „badziewności” wieży, czy od drgania lufy.
- dodatkowo punkt upadku zależy od warunków atmosferycznych. W pierwszym przybliżeniu opór jest proporcjonalny do gęstości powietrza, a ta z kolei wprost proporcjonalna do ciśnienia i odwrotnie proporcjonalna do temperatury bezwzględnej w danym punkcie. Dodatkowo jest oczywiście wiatr.
Pewnie. Ale jeśli chodzi mi o rozrzut rozumiany, jako wielkość obszaru w którym upadną pociski, to można ten efekt zaniedbać, tak mi się przynajmniej wydaje.
W końcu pociski lecą bardzo blisko siebie, a więc różnice w gęstości, temperaturze, ciśnieniu atmosfery pomiędzy nimi są zaniedbywalne. Już większy będzie wpływ zawirowań powietrza powodowany tymi pociskami co lecą z przodu ( tak czy inaczej tego nie symuluję ).
Ale jeśli rozumiemy jako zmiana miejsca upadku środka salwy pomiędzy tym w które miejsce wystrzeliliśmy, a tym gdzie realnie upadła, to faktycznie warto byłoby to dorobić.
I siłę Coriolisa też. A i krzywiznę ziemi także. Przy odległościach "morskich" zaniedbanie tego jest karygodne, a u mnie Ziemia "jest płaska".
Ignorując chwilowo atmosferę, zostają dwa pierwsze czynniki.
Nie ignoruję atmosfery. Jak bym ignorował, to prędkość uderzenia byłaby taka sama jak prędkość wystrzelenia. Tarcia brak, więc co się straci na unoszeniu w górę, to się zyska opadając. W sumie nie ma co nawet symulować numerycznie, można wziąć wzór i od razu wszystko wiadomo w momencie wystrzału.
Nawet uwzględniam zmianę gęstości ( a więc i oporu ) powietrza na różnych wysokościach ( temperatury nie, po prostu jeden „globalny współczynnik tarcia” się zmienia na różnej wysokości ). Przy okazji „odkryłem Amerykę” jakiś czas temu i długo szukałem błędu, dopóki nie dotarło do mnie, że nie ma błędu.
Lekkie działa mają największy zasięg przy nieco poniżej 45 stopniach.
Najcięższe przy dobrze powyżej 45 stopniach. Zależy od modelu tak pomiędzy 48 a nawet 52 stopnie – efekt wylecenie szybko w rozrzedzone warstwy atmosfery.
Jak z tego wynika, bardzo mało które ma największy zasięg przy 45 stopniach. ( zawsze wiedziałem, że moja fizyczka w liceum kłamie
)
W artylerii lądowej, dla w miarę nowych poprawnie zaprojektowanych i użytkowanych dział ciężkich (od końca PWś i nowsze) dominuje czynnik pierwszy i rozrzut jest z niezłym przybliżeniem wprost proporcjonalny do dystansu strzału. Dla artylerii morskiej idealne wycelowanie lufy na poruszającym się okręcie nie było możliwe i zależnie od przyjętej metody celowania i odpalania ten składnik rozrzutu był znaczący i dominował.
Z pewnym zdziwieniem odkryłem po raz kolejny Amerykę, że rozrzut z odległością wcale nie rośnie, a w każdym razie nie zawsze.
Jak się te wszystkie czynniki poskłada i jeszcze dołoży te różnice w kącie podniesienia to czasem wychodzą ciekawe rzeczy.
Jak odległość jest mała, to różnica w kącie podniesienia powiedzmy 0.25 stopnia ( 15 minut kątowych ), przekłada się na ładnych kilkaset metrów różnicy odległości.
Jak odległość jest duża, to te 0.25 stopnia przekłada się na niemal pomijalną różnicę w odległości strzału. Jeśli wszystkie inne czynniki zaniedbamy to wraz z odległością rozrzut będzie spadał.
Przy naprawdę ekstremalnie małych odległościach, to jeszcze dochodzi różnica wysokości posadzenia wieży nad poziomem morza, więc przy takim samym kącie podniesienia, pociski dolecą na inną odległość. Mój prymitywny SKO uwzględnia różnicę położenia wieży względem środka okrętu, ale wysokości nad poziomem morza nie. Przy realnych odległościach I i II wojennych, jest to do zaniedbania, ale jak chcemy strzelać naprawdę blisko....
Dla odmiany różnice w prędkości wylotowej przekładają się na to, że im dalej strzelamy tym rozrzut większy.
Jak się to wszystko poskłada do kupy, to bardzo dziwne zależności wychodzą. Rozrzut potrafi rosnąć z odległością, potem spadać, potem znów rosnąć, albo i nie, zależnie który z tych czynników w danym momencie dominuje.
Niejako zupełnie „niechcący” uzyskałem efekt jaki mieli Amerykanie w swoim czasie ze swoimi 14 calówkami. Najpierw dostałem ten efekt, a potem doczytałem, że ten problem dokładnie tak wyglądał, co niejako pośrednio potwierdza słuszność symulacji.
Co prawda wzór na lot pocisku w powietrzu jest na pewno błędny ( bo sam go wymyśliłem, „żeby pasowało” ) i pewnie przydałoby się go przerobić na zgodne z tym co pisał Bill Jurens w serii artykułów gdzieś na początku lat 80-tych, ale nie mam tych artykułów.
Warto rozdzielić symulację od renderingu i robić symulację ze stałym skokiem.
W zasadzie jest to oddzielone. To są zupełnie inne niezależne funkcje.
Jedne liczą wszystkie parametry przesunięcia, sił działających itd.
Dopiero jak wszystkie te parametry są powyliczane, to całość jest rysowana.
Zrobiłem tylko jedną rzecz dla wygody. Dopóki się wszystko nie wyliczy, nie zaczyna się rysować. Dopóki wszystko się nie narysuje nie wchodzi kolejna pętla wyliczeń zmian położenia itd. Nie dość, że tak było prościej, to jeszcze mam pełną kontrolę nad tym co się dzieje w środku. ( haha, już dawno straciłem kontrole nad swoim programem
)
Równie dobrze można całkowicie wywalić rendering i tak samo będzie się symulowało ( znaczy dokładniej bo z mniejszym skokiem ), albo rozdzielić to na oddzielne procesy komunikujące się między sobą. Na upartego nawet mogę wywalić symulację na jeden komputer a rendering na inny, tylko przesyłać sobie dane przez sieć. Myślałem o tym, żeby to tak przerobić i nawet jak będzie całość na jednym komputerze to i tak w architekturze „client/server”, ale to plany na kiedyś tam.
Antyaliasing "automatyczny" albo jest kosztowny i nie zawsze wystarczający, albo szybki i oszukany.
Bezdyskusyjnie.
Ale popatrz na te zrzuty obrazów. Tego przecież i tak nic nie uratuje, choćbym zrobił najlepszy antyaliasing na świecie to poziomowi super grafini nie dorównam. Trzeba by się zagłębić w dziedzinę wiedzy, która mnie nie interesuje. Wybrałem OpenGL w wersji sprzed ponad 20 lat ( tymi bibliotekami renderowano T-1000 w Terminatorze 2 ) z bardzo prostego powodu. Jak jest dobrze opisany obiekt, a i tak muszę go dobrze opisać, żebym mógł wyliczyć choćby przecięcie toru lotu z kadłubem, to wyświetlenie tego jest banalnie proste. Jak nie obchodzi nas wydajność, to ustawienie koloru i w pętli kolejne wierzchołki i tyle. Prosto, łatwo, przyjemnie, można się skupić na tym czym się człek interesuje - czyli zachowaniu okrętu, a nie kombinowaniu jak uzyskać jakiś efekt graficzny, albo dostosowywać struktury danych do wymagań bibliotek graficznych. Ja mam mieć struktury żeby mi się wygodnie myślało o zmianach zachodzących w okręcie, a nie wygodnie wypuszczało je do systemu graficznego!
Uzyskanie wielu efektów przy pomocy tych prehistorycznych bibliotek jest bardzo trudne, lub wręcz niemożliwe, a przy rezygnacji z niektórych udogodnień graficznych ( które są anyudogodnieniami dla moich struktur danych ) wydajność jest żenująca, ale co tam. Ważne, że działa.
Nowsze biblioteki sobie zorganizowałem, ale jak zacząłem czytać dokumentację, to się poddałem. Nie jestem grafikiem i nigdy nie będę. Grafika to dodatek do tego co tam siedzi głębiej. Pierwotnie miało zresztą nie być grafiki, ale to szczegół. W efekcie „jest jak jest” i „widać o co chodzi” i tyle musi wystarczyć.
Pieniędzy na dobrego grafika/programistę nie mam.
Bufor głebi ("z buffer") w kartach graficznych jest sprzętowo ograniczony do pojedynczej precyzji, z bardzo nieszczęśliwie (z perspektywy renderowania dużych obszarów) domyślnie rozłożoną precyzją (wiekszość dostępnych liczb jest niepropocjonalnie zagęszczona w zakresie bardzo małych odległości). W OGL 1.X ("fixed fuction pipeline") nie da się z tym wiele zrobić (można jedynie ustawić jak najdalszą "near clipping plane").
Właśnie tych bibliotek używam
Tak długo jak nie chciałem „patrzeć przez dalmierz” to sobie tak z tym radziłem, że wszystko co było dalej niż ileś tam kilometrów ( powiedzmy 8 ) było nie renderowane i koniec. A parametr mgły był dobierany tak, żeby i tak nie było tego widać w celu uniknięcia efektu „pojawiania się okrętów znikąd”
Po patrzeniu przez dalmierz, problem się pojawił. Jak ustawię granicę obcinania blisko obserwowanego celu, to mam odpowiednią dokładność widzenia. Ale jak mi wlezie w pole widzenia moja własna jednostka z zespołu, to jej nie widzę, bo nie jest wyświetlana. Podobnie nie zobaczę nadbudówek własnej jednostki itd. Jak ustawię zakresy tak żeby widzieć całość, to są te śmieszne efekty.
W sumie – przechodzę nad tym do porządku dziennego. Ładnie i tak nie będzie.
W nowych wersjach można próbować własnych algorytmów wypełniania "z buffer", co może wystarczyć albo i nie.
Symulatory lotu czasem osobno renderują teren i kokpit samolotu z różnymi ustawieniami obcinania. Problem jest trudny i nawet komercyjne kobyły w rodzaju Unreala czy Unity nie mają wbudowanego rozwiązania.
Raczej nie chce mi się w to bawić.
Symulacja nigdy nie osiągnie „wartości komercyjnej World of Warships”, a dla maniaków to czy się wyświetla ładniej czy brzydziej ma drugorzędne znaczenie.
Pewnie, że sam lubię sobie czasem „napaść oczy” jakąś super grafiką, ale jednak wolę więcej realizmu niż grafiki, jeśli nie mogę mieć i tego i tego.
Wszelkie pomysły zmian muszą być „time effective”. To jest projekt robiony „po godzinach”, a tych „pogodzin” nie ma zbyt wiele jak jest jeszcze żona i dwoje dzieci. A zarobić na życie też trzeba.