Przejdź do zawartości

Algorytm Lianga-Barsky’ego: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m TOC right
→‎Bibliografia: drobne techniczne
Linia 69: Linia 69:


== Bibliografia ==
== Bibliografia ==
* {{Cytuj | autor=Max K. Agoston | rozdział = [http://link.springer.com/chapter/10.1007/1-84628-108-3_3 Clipping] | tytuł=Computer graphics and geometric modeling. Implementation and algorithms | wydawca = Springer London | data = 2005 | data dostępu = 2015-11-30 | isbn = 978-1-85233-818-0 | s = 69-110 | język = en | odn=tak }}
* {{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:

  1. Odcinek pionowy spełnia , a poziomy [3].
  2. Jeśli dla pewnego zachodzi , to odcinek znajduje się na zewnątrz okna i dalszych obliczeń nie trzeba prowadzić[3].
  3. Jeśli to odcinek przecina bok z zewnątrz do wewnątrz, natomiast dla , odcinek przebiega z wewnątrz na zewnątrz.
  4. Dla niezerowego , wartość parametru określa punkt przecięcia z bokiem okna[3].
  5. Dla danego odcinka wyznacza się i (parametry wyznaczające oba przycięte końce)[3]:
  6. 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].
  1. W brzegowym przypadku wynikiem przycięcia odcinka do okna jest jeden punkt.
  2. Ograniczeniem jest prostopadłościan wraz z dodatkową nierównością dla trzeciego wymiaru[8]:
  1. a b Jankowski 1990 ↓, s. 59.
  2. Liang i Barsky 1984 ↓.
  3. a b c d e f g h Jankowski 1990 ↓, s. 58.
  4. Agoston 2005 ↓, s. 80.
  5. a b Foley 1996 ↓, s. 123.
  6. Jankowski 1990 ↓, s. 53–54, 59.
  7. a b c d Clipping, s. 20.
  8. Jankowski 1990 ↓, s. 104–105.

Bibliografia

Linki zewnętrzne