Symulator EU07 (i nie tylko) > Symulator
Różne mariuszowe narzędzia
Mariusz1970:
Narzedzie do drutowania, wersja alfa, plik exe.
Dodano: 20 Września 2016, 05:22:43 Kolejna wersja exe do drutowania:
Zmieniłem algorytm wyszukiwania sąsiadów danego słupa. Wydaje się lepszy od poprzedniego, no ale zawsze jest jakaś niepewność, że coś w jakiejś sytuacji może być nie tak. Dodatkowo dodałem funkcję o którą prosił matek123.
Dodano: 21 Września 2016, 02:20:45
Mariusz1970:
Kolejna wersja exe do drutowania:
Dodałem nowe funkcje:
1) Graficzne wyświetlanie miejsc, gdzie dany słup nie jest odrutowany z dwóch stron. Jest możliwość identyfikacji tego słupa.
2) Ręczne drutowanie dwóch słupów na podstawie informacji uzyskanej z funkcji 1.
Dodano: 27 Września 2016, 17:22:41 Kolejna wersja:
Aby nie musieć zapamiętywać numery ID słupów do ręcznego drutowania, jest możliwość poprzez kliknięcie przy graficznym wyświetlaniu miejsc potencjalnie nie odrutowanych, dodanie ID słupa do drutowania. Czyli w zasadzie praca z programem polega na klikaniu.
Sorry, że wersja za wersją, ale pomysły rodzą się stopniowo. Ja już nie przewiduje więcej w tym programie usprawnień.
Dodano: 27 Września 2016, 20:09:13 Zmieniłem także parametry drutów w pliku ini. Były one przepisane ze skryptu php i były częściowo nieprawidłowe.
firleju:
Właśnie chciałem napisać, że poczekam ze dwa dni i zobaczę czy na pewno nie wypuścisz nowej wersji...
Mariusz1970:
Ech. firleju, prorok czy jak ;)
Kolejna wersja:
Musiałem, bo wyłapałem babolka w specyficznych sytuacjach.
Oto wyciąg z instrukcji:
--- Cytuj ---7) [Przedzial przy ktorym nastapi symulowany obrot slupa o 180 stopni] - Przy każdym połączeniu słupów, program sprawdza wartość różnicy kątów słupów wg osi Z. Jeśli wartość będzie mieściła się w tym określonym przedziale, funkcja będzie się aktywowała.
Zdarza się, że dwa dane słupy, które mają zostać odrutowane, wyglądały na postawione względem siebie prawidłowo w scenerii. Jednak któryś z nich powinien być powinien być odwrócony o 180 stopni. Gdyby się tak to zostawiło, to druty by się krzyżowały. Jest to błąd w scenerii. Aby nie odwracać słupa w scenerii, program dokona wirtualnego obrotu słupa o180 stopni. Wtedy druty się nie będą krzyżowały. Ta metoda ma swoją wadę, mianowicie, gdy odwracany wirtualnie słup ma dodatkowo rotacje w osiach X i/lub Y, wtedy druty nie trafią na miejsce izolatorów. Wersja obecna exe do drutowania, oprócz wirtualnego obrotu słupa, zeruje w scenerii rotację w osiach X i Y. Czyli program może zmieniać scenerię. Program dokonuje zerowania za każdym razem, gdy trafi na taką sytuację.. Więc jeśli w scenerii pod tym względem jest duży bałagan, program będzie długo drutował scenerie, gdyż podczas drutowania, jeśli zdarzy się taka sytuacja, to program przerywa drutowanie, zmienia scenerię zerując rotacje w osiach X i Y i ponownie drutuje, aż znowu natrafi na taką sytuację. Może być wtedy wrażenia zapętlenia się programu. Nie należy wtedy przerywać.
Próbowałem różnych opcji poradzenia sobie z taką sytuacją, jednak ta wydaje się najbardziej niezawodna. Jedną z prób, którą próbowałem, zmieniała fizycznie w scenerii słup o 180 stopni w osi Z, pozostawiając rotacje X i Y nie zmieniane. Dawało to pozytywy efekt, ale nie zawsze. Bywały sytuacje , że słupy były odwracane jak domino i na odwróconych było dobrze, jednak, gdy następny słup w kolejce do domina, powinien zostać odwrócony, odwrócony nie został, bo nie łapał się na przedział. Efektem było ponowne krzyżowanie się drutów, tylko na innej parze słupów. Obecne rozwiązanie również minimalizuje powstanie efektu domina.
Inną metodą, była metoda zmiany kolejności wstawiania drutów dla jednego słupa, zapisanych w konfiguracji, czyli pierwszy drut pierwszego drutowanego słupa był drutowany z ostatnim drutem drugiego słupa zapisanego w konfiguracji. Drugi drut pierwszego słupa z przedostatnim drutem drugiego słupa, itd. Jednak ta metoda też się nie zawsze sprawdza. Zależy to od specyfikacji konfiguracji drutów. Dla jednych typów słupów było ok., dla innych już nie.
Tak więc z testów mi wyszło, iż ta obecna metoda jest najbardziej niezawodna.
Jeśli ktoś ma pomysł jak to inaczej rozwiązać, proszę o opis.
W związku z tym, że program może dokonać zmian w scenerii, należy dla bezpieczeństwa zrobić sobie kopię zapasową scenerii.
Powyższą funkcję można dezaktywować, wpisując przedział o dużych liczbach np. 10000 10000
Poniżej pseudo rysunki objaśniające sytuacje z krzyżowanie się drutów:
a) sytuacja prawidłowa, np. rotacja słupa 1 i 2 po 90 stopni w osiach Z
_1 _1
O O
_2 _2
b) sytuacja nieprawidłowa np. rotacja słupa 1 90 stopni, 2 270 stopni w osiach Z
_1 _2
O O
_2 _1
Druty przebiegają od 1 do 1 i od 2 do 2. Widać, że w sytuacji b druty będą się krzyżowały.
Gdyby okazało się, symulowane odwrócenie w jakimś miejscu coś zepsuło, można skorzystać z funkcji opisanej w punkcie II.3. Można wtedy w pliku druty.scm usunąć te druty, następnie za pomocą funkcji opisanej w punkcie II.2 ponownie je połączyć, ale tym razem dezaktywujemy przedział symulowanego obrotu. W tej sytuacji, program wskaże, że te słupy są odrutowane 3 razy, ale tym się nie przejmować.
--- Koniec cytatu ---
Dodatkowo dodałem przy okazji nową funkcję:
--- Cytuj ---3) Wyświetlanie graficzne miejsc, gdzie program dokonał symulowanego odwrócenia słupa.
--- Koniec cytatu ---
Na dniach, jeśli uda mi się zmobilizować, to uporządkuje wątek z moimi narzędziami. Odnośniki będą w pierwszym poście w tym wątku, wraz z opisem zmian od ostatnich uploadowań.
firleju:
Niecałe 48 godzin :D
A tak poza tym to czy na pewno jest sens fizyczne zapisywanie do pliku (obrócenie słupa)? Może wszystko robić w pamięci?
Nawigacja
[#] Następna strona
Idź do wersji pełnej