Algorytm Lianga-Barsky’ego
Algorytm Lianga-Barsky’ego – algorytm obcinania odcinka do prostokątnego okna[1], 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 pracy[2] . 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 okna[3]. Na podstawie tak uzyskanych danych można określić, którą część odcinka można narysować. Ten algorytm jest bardziej wydajny niż algorytm Cohena-Sutherlanda[4] w przypadku gdy zachodzi konieczność przycięcia odcinka[5]. 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 odcinka[5].
Opis
[edytuj | edytuj kod]Argumenty przekazywane do algorytmu
[edytuj | edytuj kod]1. Odcinek łączący punkty i przedstawiony parametrycznie równaniami[3]:
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ów[6]:
Wynik działania algorytmu
[edytuj | edytuj kod]Dwie wartości parametru takie, że i są współrzędnymi punktów przecięcia odcinka z krawędziami okna[a], 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
[edytuj | edytuj kod]Punkt znajduje się wewnątrz okna będącego argumentem algorytmu dokładnie wtedy, gdy spełnione są nierówności[3]:
co można wyrazić równoważnie jako cztery nierówności[3]
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 [3].
- Jeśli dla pewnego zachodzi to odcinek znajduje się na zewnątrz okna i dalszych obliczeń nie trzeba prowadzić[3].
- 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 okna[3].
- Dla danego odcinka wyznacza się i (parametry wyznaczające oba przycięte końce)[3]:
- Jeśli to cały odcinek znajduje się poza oknem[1], w przeciwnym razie obliczone wartości stanowią wynik działania algorytmu.
Własności
[edytuj | edytuj kod]- Współrzędne są obliczane tylko dla dwóch punktów przecięcia[7].
- Wystarcza obliczenie nie więcej niż czterech parametrów [7].
- Algorytm nie jest iteracyjny[7].
- Algorytm można uogólnić na przypadki trójwymiarowe[b][7].
Uwagi
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ a b Jankowski 1990 ↓, s. 59.
- ↑ Liang i Barsky 1984 ↓.
- ↑ a b c d e f g h Jankowski 1990 ↓, s. 58.
- ↑ Agoston 2005 ↓, s. 80.
- ↑ a b Foley 1996 ↓, s. 123.
- ↑ Jankowski 1990 ↓, s. 53–54, 59.
- ↑ a b c d Clipping ↓, s. 20.
- ↑ Jankowski 1990 ↓, s. 104–105.
Bibliografia
[edytuj | edytuj kod]- Clipping, [w:] Max K. Agoston , Computer graphics and geometric modeling. Implementation and algorithms, Springer London, 2005, s. 69–110, DOI: 10.1007/1-84628-108-3_3, ISBN 978-1-84628-108-2 (ang.).
- James D. Foley , Computer Graphics: Principles and Practice, Addison-Wesley Professional, 1996, ISBN 978-0-201-84840-3 [dostęp 2015-11-30] (ang.).
- Michał Jankowski , Elementy grafiki komputerowej, Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, ISBN 83-204-1326-5 .
- You-Dong Liang , B.A. Barsky , A New Concept and Method for Line Clipping, „ACM Trans. Graph.”, 3 (1), 1984, s. 1–22, DOI: 10.1145/357332.357333, ISSN 0730-0301 [dostęp 2015-11-22] .
- CS355. Graphics and Multimedia. Clipping. [dostęp 2015-11-22] [zarchiwizowane 2018-03-28] (ang.).
Linki zewnętrzne
[edytuj | edytuj kod]- Algorytm obcinania Lianga-Barsky\ego [online], Warsztat.GD [dostęp 2015-11-22] [zarchiwizowane z adresu 2015-11-22] .
- Grafika komputerowa I – 3. Obcinanie linii i wielokątów – MIM UW [online], mst.mimuw.edu.pl [dostęp 2015-11-22] .
- Artykuł dot. Catmulla-Clarka
- Bimal Kumar Ray , A Line Segment Clipping Algorithm in 2D, „International Journal of Computer Graphics”, 3 (2), listopad 2012 [dostęp 2015-11-30] [zarchiwizowane z adresu 2017-08-08] (ang.).