Algorytm Lianga-Barsky’ego
Szablon:Spis treści Algorytm Lianga-Barsky’ego – algorytm obcinania odcinka do prostokątnego oknaSzablon:Odn, stosowany w grafice komputerowej. Nazwa algorytmu pochodzi od nazwisk autorów You-Dong Lianga i Briana A. Barsky’ego, którzy zaproponowali go w swojej pracySzablon:Odn. Algorytm wykorzystuje parametryczne równanie odcinka oraz nierówności opisujące prostokątne okno do określenia wartości współczynnika parametrycznego, dla których odcinek przecina się z bokami oknaSzablon:Odn. Na podstawie tak uzyskanych danych można określić, którą część odcinka można narysować. Ten algorytm jest bardziej wydajny niż algorytm Cohena-SutherlandaSzablon:Odn w przypadku gdy zachodzi konieczność przycięcia odcinkaSzablon:Odn. Pomysłem w algorytmie Lianga-Barsky’ego jest wykonywanie tylu porównań, na ile jest to możliwe przed właściwym obliczaniem końców przyciętego odcinkaSzablon:Odn.
Opis
Argumenty przekazywane do algorytmu
1. Odcinek łączący punkty i przedstawiony parametrycznie równaniamiSzablon:Odn:
dla Zmiana parametru od do opisuje też kierunek rysowania odcinka, do którego odnosi się działanie algorytmu.
2. Prostokątne okno o krawędziach równoległych do osi układu współrzędnych, zadane przez współrzędne swoich narożnikówSzablon:Odn:
Wynik działania algorytmu
Dwie wartości parametru takie, że i są współrzędnymi punktów przecięcia odcinka z krawędziami okna[uwaga 1], bądź informacja, że takie punkty nie istnieją.
W tej pierwszej sytuacji wejściowe równania parametryczne dla opisują odcinek, który jest wynikiem przycięcia odcinka wejściowego do obszaru okna, w tej drugiej odcinek leży w całości na zewnątrz okna.
Działanie algorytmu
Punkt znajduje się wewnątrz okna będącego argumentem algorytmu dokładnie wtedy, gdy spełnione są nierównościSzablon:Odn:
co można wyrazić równoważnie jako cztery nierównościSzablon:Odn
odpowiadające poszczególnym krawędziom okna w kolejności: lewa, prawa, dolna, górna. Wartości parametrów są następujące:
Ostateczne wyznaczenie odcinka:
- Odcinek pionowy spełnia a poziomy Szablon:Odn.
- Jeśli dla pewnego zachodzi to odcinek znajduje się na zewnątrz okna i dalszych obliczeń nie trzeba prowadzićSzablon:Odn.
- Jeśli to odcinek przecina bok z zewnątrz do wewnątrz, natomiast dla odcinek przebiega z wewnątrz na zewnątrz.
- Dla niezerowego wartość parametru określa punkt przecięcia z bokiem oknaSzablon:Odn.
- Dla danego odcinka wyznacza się i (parametry wyznaczające oba przycięte końce)Szablon:Odn:
- Jeśli to cały odcinek znajduje się poza oknemSzablon:Odn, w przeciwnym razie obliczone wartości stanowią wynik działania algorytmu.
Własności
- Współrzędne są obliczane tylko dla dwóch punktów przecięciaSzablon:Odn.
- Wystarcza obliczenie nie więcej niż czterech parametrów Szablon:Odn.
- Algorytm nie jest iteracyjnySzablon:Odn.
- Algorytm można uogólnić na przypadki trójwymiarowe[uwaga 2]Szablon:Odn.
Uwagi
Przypisy
Bibliografia
Linki zewnętrzne
Błąd rozszerzenia cite: Istnieje znacznik <ref> dla grupy o nazwie „uwaga”, ale nie odnaleziono odpowiedniego znacznika <references group="uwaga"/>