Algorytm Lianga-Barsky’ego: Różnice pomiędzy wersjami
[wersja przejrzana] | [wersja przejrzana] |
m TOC right |
→Bibliografia: drobne techniczne |
||
Linia 69: | Linia 69: | ||
== Bibliografia == |
== Bibliografia == |
||
* {{Cytuj | autor=Max K. Agoston | rozdział = |
* {{Cytuj | autor=Max K. Agoston | rozdział = Clipping | tytuł=Computer graphics and geometric modeling. Implementation and algorithms | wydawca = Springer London | data = 2005 | isbn = 978-1-84628-108-2 | s = 69-110 | doi=10.1007/1-84628-108-3_3 | język = en | odn=tak }} |
||
* {{Cytuj | url = https://books.google.co.uk/books?id=-4ngT05gmAQC&pg=PA123&lpg=PA123#v=onepage&f=false | tytuł = Computer Graphics: Principles and Practice | wydawca = Addison-Wesley Professional | data = 1996 | data dostępu = 2015-11-30 | isbn = 9780201848403 | język = en | autor = James D. Foley | odn=tak}} |
* {{Cytuj | url = https://books.google.co.uk/books?id=-4ngT05gmAQC&pg=PA123&lpg=PA123#v=onepage&f=false | tytuł = Computer Graphics: Principles and Practice | wydawca = Addison-Wesley Professional | data = 1996 | data dostępu = 2015-11-30 | isbn = 9780201848403 | język = en | autor = James D. Foley | odn=tak}} |
||
* {{Cytuj | autor=Michał Jankowski | tytuł=Elementy grafiki komputerowej | miejsce=Warszawa | wydawca=[[Wydawnictwa Naukowo-Techniczne]] | data=1990 | isbn=83-204-1326-5 | odn=tak}} |
* {{Cytuj | autor=Michał Jankowski | tytuł=Elementy grafiki komputerowej | miejsce=Warszawa | wydawca=[[Wydawnictwa Naukowo-Techniczne]] | data=1990 | isbn=83-204-1326-5 | odn=tak}} |
Wersja z 21:21, 14 lut 2017
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 postawie 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
Argumenty przekazywane do algorytmu
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
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
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
- 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].
- ↑ 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
- 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] (ang.).
Linki zewnętrzne
- Algorytm obcinania Lianga-Barsky\ego [online], Warsztat.GD [dostęp 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] (ang.).