![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Mam taką oto funkcję oparta na algorytmie Bresenhama.
Kod służy do wyznaczania trasy a właściwie do rysowania linii między punktem A a punktem B na układzie współrzędnych. Jednak nie działa tak jakbym chciał. Od wskazanego punktu w PRAWO, PRAWA GÓRA, PRAWY DÓŁ odpowiednio pokazuje przejścia przez punkty w układzie współrzędnych. Ale jeśli wykonuję rysowanie "do tyłu" to pokazuje mi odpowiednie punkty- ale zawsze rosnąco-- co przy rysowaniu w LEWO, LEWO GÓRA i LEWO DÓŁ powinno być na odwrót. Jak zmodyfikować kod aby pokazywał mi odpowiednie pola? Już daję przykłady: Startuję z punktu [34,62]. 3 pól w prawo. System pokazuje mi poszczególne kroki: route=[[34,62],[34,63],[34,64],[34,65]] i to jest git (IMG:style_emoticons/default/smile.gif) Ale jeśli z tego samego punktu chcę rysować linię w lewo to system pokazuje mi punkty: route=[[34,59],[34,60],[34,61],[34,62]] I same pola są oki- ale jak zmodyfikować kod aby pokazywał mi pola w kolejności malejącej jeśli rysuję w LEWO, LEWO GÓRA, LEWO DÓŁ? route=[[34,62],[34,61],[34,60],[34,59]] Oto jest pytanie! Ten post edytował miccom 24.01.2022, 08:24:24 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 807 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co widzę, to przy podaniu punktu startowego: 34,62 a końcowego: 34,59, wynikiem jest:
34,62 34,59 34,60 34,61 34,59 a nie to co podałeś w pierwszym poście: 34,59 34,60 34,61 34,62 W zależności od wartości Y1 i Y2 wystarczy wstawić koniec punkt początkowy, albo końcowy. Nie unikniesz tego, że X1 może być większe od X2 - przecież linia może znaleźć się w każdej ćwiartce układu współrzędnych, a nie tylko w pierwszej, więc nie zawsze X1<X2 i jednocześnie Y1<Y2. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 15:14 |