Algorytm Cohena-Sutherlanda
Algorytm Cohena-Sutherlanda to metoda obcinania dwuwymiarowych odcinków przez prostokąt obcinający, której boki są równoległe do osi układu współrzędnych. Znajduje zastosowanie głównie w grafice komputerowej, na przykład w okienkowaniu.
Opis Algorytmu
Prostokąt obcinający jest zdefiniowany przez cztery linie: , co dzieli płaszczyznę na dziewięć obszarów. Każdemu z nich przypisano 4-bitowe kody, które określają położenie punktu względem prostokąta:
- Bit 0: (punkt po lewej)
- Bit 1: (punkt po prawej)
- Bit 2: (punkt poniżej)
- Bit 3: (punkt powyżej)
Kody te służą do szybkiej oceny, czy odcinek jest wewnątrz lub na zewnątrz prostokąta:
- Jeśli kody obu końców odcinka wynoszą 0 (0000), odcinek jest akceptowany.
- Jeśli wynik iloczynu kodów jest różny od 0, odcinek jest odrzucany.
W przeciwnym razie algorytm wymaga dalszych obliczeń:
- Wybierz koniec odcinka leżący poza prostokątem.
- Oblicz punkt przecięcia odcinka z jedną z prostych, zależnie od kodu wybranego końca.
- Przytnij odcinek do tego punktu.
- Powtórz proces, aż odcinek zostanie zaakceptowany lub odrzucony.
Algorytm może wymagać od 0 do 4 iteracji do obcięcia odcinka.
Przykłady Obcinania
Obcinanie odcinka AB:
- Wybierz punkt B (1).
- Oblicz przecięcie z prostą – punkt C (2).
- Nowy odcinek AC znajduje się w całości w prostokącie, algorytm kończy się (3).
Obcinanie odcinka DE:
- Wybierz punkt D (1).
- Oblicz przecięcie z prostą – punkt F (2).
- Nowy odcinek EF, kontynuuj algorytm (3).
- Wybierz punkt E (1).
- Oblicz przecięcie z prostą – punkt G (2).
- Nowy odcinek FG, kontynuuj (3).
- Wybierz punkt F (1).
- Oblicz przecięcie z prostą – punkt H (2).
- Nowy odcinek GH znajduje się w całości w prostokącie, algorytm kończy się (3).