majcherpiotrek / crossroadsmanager Goto Github PK
View Code? Open in Web Editor NEWSystem for synchronizing the traffic lights in order to achieve minimal avarage waiting time on the crossroads.
System for synchronizing the traffic lights in order to achieve minimal avarage waiting time on the crossroads.
Na podstawie tego, co obecnie jest roboczo w Controller, stworzyć fabrykę samochodów.
-Fabryka powinna działać jako oddzielny wątek.
-Co zadany interwał czasu dodawać nowe samochody
-Zlecać wątkowi Javy fx dodanie ich do sceny
-Uruchamiać samochody
-Mozna zrobić, aby dla zadanej drogi tworzyła z zadaną częstotliwością (np. przekazywać jako parametr mapę <RoadModel, int>, gdzie drugim elementem będzie interwał w milisekundach) - takie podejście będzie dobre dla API dla algorytmu.
Zmiana wartości w trakcie ruszania
Setter do CarModelGenerator -> onDragDone
j.w
Aktualnie w większości klas realizujących zadania kontrolerów mamy nieskończone pętle, trzeba umożliwić zabijanie tych wątków za pomoca mechanizmu interrupt.
W sumie ściśle powiązane z issue7
Poprawić rysowanie linii między pasami - powinna być przerywana.
Napisać metodę sprawdzającą czy zadany punkt znajduje się na drodze. Można też dodać przeciążoną z dodatkowym parametrem mówiącym o numerze pasa, ponieważ będzie nas bardziej interesowało, czy samochód znajduje się na prawym pasie drogi, przed światłami, niż czy jest na niej w ogóle.
Stworzyć klasę modelu skrzyżowania z użyciem RoadModel. Powinna również implementować StraightLineShapeInterface, żeby można było w łatwy sposób rysowć skrzyżowanie.
W klasie TrafficManager w metodzie run() uzupełnić znajdujące się tam TODO. Kolizje między samochodami wykrywać analogicznie jak między samochodem a światłami - za pomocą getBoundsInParent() oraz intersect().
j.w. na podstawie parametrów z sliderów
Wątki samochodów odpalać w Executorze. Klasa -> scheduledExecutor?? Specjalnie do wywoływania wątków z interwałem. Generator i Managera odpalić z scheduledExecutor
W klasie CrossroadsView w metodach setLights*() ustawić dobrze współrzędne świateł, tak żeby zawsze
rysowały się nad odpowiednimi drogami. Problem będzie jeśli będzie wiecej pasów, trzeba pomyśleć jak to zrobić, żeby było rozszerzalne ewentualnie na więcej pasów.
Problem jest taki, że teraz rysuje się to w układzie współrzędnych Anchor Pane, który jest inny od Canvasa, na którym rysowana jest droga. Najlepiej by było rozciągnąć Canvas po prostu na cały Stack Pane na którym jest Canvas.
Jest tak Stack Pane, na tym Canvas, na tym przezroczysty AnchorPane, a na nim elementy, które się w jakiś sposób zmieniają - samochody, światła ... Ale w sumie chyba można ten AnchorPane wywalić. Można spróbować tak robić, żeby bezpośrednio dodawać do StackPane, ale nie wiem, czy to będzie działać, bo chyba coś już tak próbowałem.
Czy samochody będą jakoś same to rozpoznawały?
Wtedy można tak:
-dodać informację o światłach do drogi
-samochód będzie sprawdzał na której jest drodze
-jak zobaczy czerwone to zatrzymywał się jak dojedzie do linii
(W takim rozwiązaniu może być problem z najeżdżaniem na siebie samochodó)
Sposób z managerem ruchu:
-Klasa, która kontrolowałaby z góry ruch wszystkich samochodów w zależności od świateł,
mogłaby wtedy też kontrolować zderzenia
Aktualnie jest tak, że Bounds samochodu pokrywają się z tym co widzimy na ekranie. Dobrze by było tak przerobić klasę samochodu, że bazowy kwadrat czy prostokąt, którego Bounds będziemy pobierać był nieco większy niż sam samochód, aby samochody nie zlewały się ze sobą przy zatrzymywaniu.
Trzeba by jakoś usuwać samochody po tym jak przejadą swoja trasę. Należałoby dodać do traffic managera sprawdzanie, czy samochód skończył już swoją trasę i jesli tak, to go wywalać. Najlepiej by było, jakby samochody wyjeżdżały poza widok, wtedy na pewno działoby się to płynnie
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.