Witam! Mam przyjemność przedstawić moją pierwszą w życiu aplikację okienkową
Jest to napisany w Javie kalkulator dzięki któremu można precyzyjnie wykonać np. 20 minutowy manewr odlotu z planety.
Najpierw link do wersji 1.1:
Aby zobaczyć link -
ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘUruchomienie:
Program przede wszystkim wymaga, żeby na komputerze była zainstalowana Java
Po ściągnięciu folderu z dropboxa trzeba go rozpakować (bo ściąga się zipa) tak jak na obrazku
a potem otworzyć rozpakowany folder jak na obrazku
i zauważyć, że w środku są:
folder 'configs' - zawiera on pliki tekstowe z danym planet potrzebnymi do obliczeń
plik Jar 'calc' - podobno na większości komputerów wystarczy podwójnie kliknąć na niego, żeby się uruchomił
plik bat 'start' - jeśli klikanie na Jar-a nie działa, można uruchomić ten skrypcik, powinno zadziałać
Jeśli chodzi o tworzenie własnych configów dla innych układów planetarnych to jest to bardzo proste. Oglądając przykładowe pliki widać, że w każdej linijce jest nazwa planety, parametr grawitacyjny GM i promień w kilometrach, wszystko oddzielone spacją. Ponadto w pierwszej linijce można określić która planeta wczyta się domyślnie.
Samo okienko wygląda następująco:
Krótki opis, co gdzie jest (przykłady potem)
W górnym panelu jest możliwość wyboru układu planetarnego i obok planety (lub księżyca) nad którym wykonujemy manewr. Jest również przycisk 'Calculate' który wciskamy po wpisaniu odpowiednich danych, żeby otrzymać wynik.
W panelu poniżej mamy dane dotyczące aktualnej orbity statku - Apoapsis, Periapsis w kilometrach. W linijce poniżej mamy dane dotyczące manewru - delta-V w m/s i czas w sekundach pomiędzy manewrem a Periapsis orbity.
Poniżej po
prawej stronie mamy listę stopni naszego statku. Przyciskami 'add stage' możemy dodawać kolejne stopnie a 'remove last stage' usuwa ostatni stopień. Poniżej mamy tabelkę z danym rakiety: 'Start M' to masa początkowa danego stopnia, 'End M' masa końcowa tegoż stopnia, 'Thrust' to sumaryczny ciąg danego stopnia, 'Isp' to wypadkowy impuls właściwy stopnia.
Z kolei po
lewej stronie mamy wynik obliczeń. Kolejno od góry: czas trwania manewru, moment włączenia silników, moment wyłączenia silników, parametry orbity na którą wejdziemy, jej mimośród, odległość od planety w momencie wyłączenia silników, zużyte delta-v, straty wyrażone w m/s, potem w tonach paliwa, i masa końcowa statku.
No i teraz najważniejsze - jak tego używać??
Program działa jedynie dla tych manewrów które są wyłącznie 'do przodu' lub 'do tyłu', tzn nie mają żadnych składowych w kierunkach prostopadłych do płaszczyzny orbity ani w kierunku radialnym. Idea opiera się na jednym założeniu. Podczas wykonywania manewru należy kierować statek na znacznik 'prograde' a nie na ten wskazywany przez manewr. I tyle. A teraz pora na ilustrowaną instrukcję na dwóch przykładach:
Przykład 1 - odlot z kołowej orbity wokół Kerbinu
Wybieramy odpowiedni układ planetarny - 'stock kerbol' w tym wypadku oraz później planetę 'Kerbin'. Na początek wpisujemy Apoapsis i Periapsis orbity. Nie ma tu co szaleć z nadmierną dokładnością, jeśli nie różnią się one o więcej niż jakieś 10% można spokojnie uznać orbitę za kołową i wziąć ich średnią wartość. Następnie trzeba rzucić okiem na masę pojazdu.
Jak już zaplanujemy nasz manewr wpisujemy jego wartość do programu. Sprawdzamy również jakie są parametry silnika (ciąg i impuls właściwy), żeby móc je również wpisać.
Po uzupełnieniu danych zerkamy na program czy jakiś danych nie brakuje. Jak widać 'Time from Pe' jest domyślnie ustawione na 0, bo na kołowej orbicie nie ma znaczenia gdzie w stosunku do Periapsis jest manewr. Nie trzeba więc tego ruszać. Ponadto nic nie wspominałem na razie o masie końcowej rakiety. Jeśli mamy pewność, że paliwa nie zabraknie można to pole zostawić puste - program domyślnie przyjmie 1t dla obliczeń. Skoro już mamy wszystko, klikamy 'Calculate' i obserwujemy wynik.
Ustawiamy naszą rakietę w kierunku 'prograde' tak jak na screenie i czekamy. Program wyliczył, że 'burn start' powinien nastąpić w -1:57, oznacza to, że musimy uruchomić silniki na 1 minutę i 57 sekund przed manewrem. W praktyce, wciskanie shifta i zwiększenie ciągu od 0 do 100% trwa jakieś 2 sekundy, więc zaczynamy już w 1:58.
Po minięciu manewru nie kasujemy go!! Tylko lecimy dalej pamiętając, żeby cały czas kierować rakietę na 'prograde'.
Program wyliczył, że 'burn end' ma nastąpić w +2:05 czyli trzeba wyłączyć silniki 2 minuty i 5 sekund po manewrze. Dlatego nie należało kasować manewru, żeby móc teraz zobaczyć ten czas.
Porównujemy orbity, docelową i uzyskaną pod kątem zgodności. Tym razem nasz pilotaż był prawie idealny.
Przykład drugi - odlot z eliptycznej orbity wokół Kerbinu
Nie będę jeszcze raz pisał tak szczegółowo. Wpisujemy Apoapsis, Periapsis i masę.
Ustawiamy manewr 1500m/s, który jak pokazują strzałki, następuje 2 minuty po Periapsis. Oznacza to, że w programie 'Time from Pe' dajemy 120. Gdyby manewr był przed Periapsis, byłoby -120.
Sprawdzamy silnik - ciąg 60kN, impuls właściwy 800s.
Po wprowadzeniu danych do kalkulatora otrzymujemy wyniki.
Odpalamy silnik 3 minuty i 5 sekund przed manewrem.
A wyłączamy 4 minuty i 10 sekund po.
I jak widać tym razem nie wykonałem tego manewru wystarczająco dokładnie
stąd orbity docelowe i uzyskane nie pokrywają się całkowicie, ale na ogół można to skorygować chwilę później bardzo niewielkim kosztem.
Mam nadzieję, że wytłumaczyłem zrozumiale
Ponieważ programik może wydawać się upierdliwy (to całe wpisywanie danych), podaję kilka informacji:
Po pierwsze - program służy do liczenia
długich manewrów, długich tzn. porównywalnych z okresem orbitalnym i w dodatku umiejscowionych nisko w polu grawitacyjnym. Żeby nikomu nie przyszło do głowy używać mojego programu do manewrów np. na orbicie okołosłonecznej, albo 70 tys. kilometrów nad Kerbinem. Krótkie manewry spokojnie można wykonywać symetrycznie tzn. zacząć na 5 minut przed, skończyć 5 minut po (dla odpalenia trwającego 10 minut) i to zresztą wam program wyliczy
Po drugie - nie zawsze manewr wyjdzie idealnie. Jest to spowodowane częściowo niedokładnym wykonaniem przez użytkownika
No i niewykluczone, że program rozwiązuje równania ruchu rakiety dokładniej niż samo KSP, no a na to już nic nie poradzę. Co do innych błędów - które może się pojawią, może nie - ich natura jest póki co nieznana.
Po trzecie - w przypadku wielostopniowych rakiet, program zakłada, że zużyte stopnie są odrzucane natychmiastowo. Jednak myślę, że prawie zawsze transfery wykonuje się jednym stopniem.
Kilka ciekawostek na koniec, lub jak kto woli wniosków po napisaniu programu.
W przypadku odlotu z planety, statek nie wejdzie na identyczną orbitę jak ta docelowa. Program liczy tak, żeby rakieta weszła na orbitę o tej samej energii i skierowanej w tym samym kierunku (czyli równolegle też może być).
W przypadku eliptycznych orbit, program powinien wyliczyć sytuację, w której Apoapsis orbity jest dokładnie tam gdzie powinno być.
W zasadzie wpisanie ujemnego delta-V - czyli hamowanie - też powinno działać. Wtedy oczywiście należy kierować statek na 'retrograde'. Trzeba jedynie mieć na uwadze, że nie każdy manewr hamowania da się w ten sposób wykonać, program może zwrócić jakieś głupie wyniki (choć coś tam dopisałem, żeby się w tym orientował).
Z przyczyn praktycznych, program działa liczy jedynie manewry krótsze niż 24h
I najciekawsza rzecz -
straty. Okazuje się, że mając niski TWR w kosmosie, na wykonywaniu odpaleń traci się trochę paliwa. Jest to jednak nieliniowa funkcja ze względu na czas trwania manewru tzn. dzieląc manewr na dwie części, łączne straty będą mniejsze niż gdybyśmy polecieli 'na raz'
Czekam na komentarze, że coś nie działa, że badziewne, że źle liczy, że cośtam i ogólnie wszelki feedback mile widziany
LicencjaAby zobaczyć link -
ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ