Bardzo dziękuję za to pytanie!
Nie wiem, jak to jest robione teraz. Ale na samym początku było tak, że każda oś miała swój osobny obiekt, na wózek były dwie osie, a z ich wzajemnego położenia były wyznaczane wektory: styczny i prostopadły do toru (dodatkowo wyliczanie tych wektorów z osi było uzależnione od FPS albo ustawień w INI, co robiło masę dodatkowych problemów). Ponieważ 4 osie na pojazd robiły problemy z obsługą eventów przy zmianie kierunku jazdy na łączeniu torów (zmieniała się oś decydująca o przypisaniu pojazdu do odcinka toru), tymczasowo uprościłem ten mechanizm do dwóch osi na pojazd, a wektory zacząłem wyliczać ze wzoru na pochodne krzywej Béziera. Kwestia osi decydującej była związana z obsługą zajętości torów i czymś jeszcze, czego nie pamiętam (być może wyliczania odległości od sygnałów). Co do zasady osią decydującą była pierwsza od kierunku jazdy, natomiast po zmianie kierunku jazdy oś decydująca musiała przełączać się dopiero na odpowiednio długim torze, na którym obie osie mogły się znajdować jednocześnie. Redukcja do dwóch osi była tymczasowa, tzn. po uporaniu się ze wszystkim problemami z prowadzeniem pojazdów po torach planowałem przywrócić obsługę dowolnej liczby osi (podanej w FIZ), żeby możliwe były poślizgi pojedynczych osi, a także aby obsługiwać "dostosowania sił do nacisku kół".
Drugi problem z osiami był taki, że każda mogła pojechać innym torem i wtedy pudło pojazdu znajdowało się po środku, często doprowadzając do lewitacji. Przyczyna była taka, że osie zawsze były przesuwane o stałą odległość, wynikającą z prędkości i czasu kroku fizyki. W szczególności się to objawiło po uruchomieniu skrzyżowań, kiedy każda oś samochodu wylosowała inny kierunek. Postanowiłem to naprawić wprowadzając stałą odległość pomiędzy wózkami, co doprowadzałoby do wykolejenia po zbyt dużym rozjechaniu wózków na różne tory, a w przypadku samochodów zawsze ciągnęłoby tylną oś za pierwszą. Jednocześnie stała odległość pomiędzy wózkami pozwoliłaby na prawidłowe liczenie zwiększonych oporów jazdy na łukach, a także sensowniejsze liczenie sił na zderzakach oraz sprzęgach.
Trzeci problem, to zbędność skomplikowanych obliczeń dla krzywych Béziera, które w 90% przypadków można by uprościć do okręgu. Odpada wtedy przybliżanie łuku okręgu łamaną i różne inne absurdalne kombinacje (np. z liczeniem długości i wyznaczaniem momentu przejechania na sąsiedni tor).
Czwarty problem związany z osiami był widoczny w postaci niedopasowania kół do szyn (przesunięcie w bok). Nie pamiętam szczegółów, ale na pewno było to motywacją do zabrania się z obliczenia związane z prowadzeniem osi. Chyba też występowały problemy na złożeniu łuków pionowych w łukami w planie, gdzie promienie łuków pionowych są orientacyjnie 10 razy większe od promieni łuków w planie, gdy tymczasem długość wektorów kontrolnych może być powiązana tylko z jednym promieniem. Mogę się mylić, gdyż nie mam tego przemyślanego do końca, ponieważ szczegółowe analizy przełożyłem na później i nigdy ich nie wykonałem (nie jestem odpowiedzialny za prawidłowość obliczeń w MaSzynie).
Niestety, w czasie moich prac nad poprawą pozycjonowania wózków okazało się natychmiastowo niezbędne "odhamowanie rozwoju" poprzez opublikowanie kodu wraz ze zniszczeniem używanych przeze mnie narzędzi, a moje prace zostały nazwane brakiem przejrzystości i sabotażem. Od tej pory dalszą pracą nad kodem miały się zająć inne osoby, których wskazać nie potrafię. Później nikt mnie nawet nie pytał, nad czym pracowałem ani jakie plany miałem wobec poszczególnych rozwiązań, więc pewnie inni są dużo lepiej zorientowani w tych zagadnieniach.
Nie wiem, czy nadal możliwe jest rozjechanie wózków pojazdów kolejowych na różne tory bez wykolejenia, bo dawno tego nie sprawdzałem. Wydaje mi się, że lewitujące samochody jeszcze niedawno widziałem (nie pobrałem jeszcze tegorocznej paczki, a nie wydaje mi się, żebym zauważył poprawienie tego na liście wprowadzonych zmian). Również mam pytanie do dewelopera, czy opisany wyżej bałagan z prowadzeniem osi i wózków został doprowadzony do jakiegoś sensownego stanu? Być może jest gdzieś szczegółowa analiza tych problemów w ukrytych działach, albo dyskusja się odbyła na czacie? Chciałbym o tym poczytać więcej i będę wdzięczny za wskazanie. Dziękuję!
Regulamin, zakazy 23, obowiązki 1, 11.
+10