Grafika komputerowa Wykład 2 Algorytmy rastrowe



Podobne dokumenty
WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Grafika Komputerowa. Algorytmy rastrowe

Algorytmy grafiki rastrowej. Mirosław Głowacki Wykład z Grafiki Komputerowej

1 Wstęp teoretyczny. Temat: Obcinanie odcinków do prostokąta. Grafika komputerowa 2D. Instrukcja laboratoryjna Prostokąt obcinający

FIGURY I PRZEKSZTAŁCENIA GEOMETRYCZNE

Algorytmy grafiki rastrowej. Mirosław Głowacki Wykład z Grafiki Komputerowej

Definicja obrotu: Definicja elementów obrotu:

Grafika 2D. Rasteryzacja elementów wektorowych. opracowanie: Jacek Kęsik

Grafika komputerowa Wykład 9 Algorytmy wyznaczania obiektów zasłonietych

Laboratorium grafiki i multimediów

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Grafika komputerowa Wykład 8 Modelowanie obiektów graficznych cz. II

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

FUNKCJA LINIOWA - WYKRES

FUNKCJA LINIOWA - WYKRES. y = ax + b. a i b to współczynniki funkcji, które mają wartości liczbowe

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

9. Podstawowe narzędzia matematyczne analiz przestrzennych

11. Znajdż równanie prostej prostopadłej do prostej k i przechodzącej przez punkt A = (2;2).

Podstawy działań na wektorach - dodawanie

Plan wykładu. Wykład 3. Rzutowanie prostokątne, widoki, przekroje, kłady. Rzutowanie prostokątne - geneza. Rzutowanie prostokątne - geneza

Rysowanie punktów na powierzchni graficznej

Ekstrema globalne funkcji

ZAGADNIENIA PROGRAMOWE I WYMAGANIA EDUKACYJNE DO TESTU PRZYROSTU KOMPETENCJI Z MATEMATYKI DLA UCZNIA KLASY II

Próbny egzamin maturalny z matematyki Poziom rozszerzony

AUTOCAD teoria i zadania z podstaw rysowania Rysowanie linii, prostej, półprostej, punktu, trasy, polilinii. Zadania geodezyjne.

KRZYŻÓWKA Może być np. równoboczny lub rozwartokątny. Jego pole to a b HASŁO:

FUNKCJA LINIOWA, RÓWNANIA I UKŁADY RÓWNAŃ LINIOWYCH

Rys. 1. Rozpoczynamy rysunek pojedynczej części

PLANIMETRIA CZYLI GEOMETRIA PŁASZCZYZNY CZ. 1

Podstawy Informatyki Wykład V

METODY KONSTRUKCJI ZA POMOCĄ CYRKLA. WYKŁAD 1 Czas: 45

Zad.3. Jakub Trojgo i Jakub Wieczorek. 14 grudnia 2013

Co należy zauważyć Rzuty punktu leżą na jednej prostej do osi rzutów x 12, którą nazywamy prostą odnoszącą Wysokość punktu jest odległością rzutu

KLASA II TECHNIKUM POZIOM PODSTAWOWY PROPOZYCJA POZIOMÓW WYMAGAŃ

Animowana grafika 3D. Opracowanie: J. Kęsik.

Łożysko z pochyleniami

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY MATEMATYKA KLASA 8 DZIAŁ 1. LICZBY I DZIAŁANIA

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY TRZECIEJ NA ROK SZKOLNY 2011/2012 DO PROGRAMU MATEMATYKA Z PLUSEM

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

TO TRZEBA ROZWIĄZAĆ-(I MNÓSTWO INNYCH )

CorelDraw - Edytor grafiki wektorowej

Grafika komputerowa Wykład 6 Krzywe, powierzchnie, bryły

Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a

GEOMETRIA ELEMENTARNA

KONKURS ZOSTAŃ PITAGORASEM MUM. Podstawowe własności figur geometrycznych na płaszczyźnie

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

Obrazy rekurencyjne. Zastosowanie rekurencji w algorytmice. AUTOR: Martin Śniegoń


WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE DRUGIEJ LICEUM

PODSTAWY > Figury płaskie (1) KĄTY. Kąt składa się z ramion i wierzchołka. Jego wielkość jest mierzona w stopniach:

Wykład VII PASCAL - grafika;

Rozdział 2. Krzywe stożkowe. 2.1 Elipsa. Krzywe stożkowe są zadane ogólnym równaniem kwadratowym na płaszczyźnie

Ćwiczenia z Geometrii I, czerwiec 2006 r.

Podstawy grafiki komputerowej

Antyaliasing w 1 milisekundę. Krzysztof Kluczek

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE VIII

Bukiety matematyczne dla gimnazjum

V Międzyszkolny Konkurs Matematyczny

Rys 3-1. Rysunek wałka

LI Olimpiada Matematyczna Rozwiązania zadań konkursowych zawodów stopnia trzeciego 3 kwietnia 2000 r. (pierwszy dzień zawodów)

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

Poniżej przedstawiony został podział wymagań na poszczególne oceny szkolne:

Metoda graficzna może być stosowana w przypadku gdy model zawiera dwie zmienne decyzyjne. Metoda składa się z dwóch kroków (zobacz pierwszy wykład):

Języki formalne i automaty Ćwiczenia 5

Geometria analityczna

Przykładowe rozwiązania zadań. Próbnej Matury 2014 z matematyki na poziomie rozszerzonym

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

Algebra z geometrią analityczną zadania z odpowiedziami

Technikum Nr 2 im. gen. Mieczysława Smorawińskiego w Zespole Szkół Ekonomicznych w Kaliszu

Krzywa uniwersalna Sierpińskiego

RZUT CECHOWANY DACHY, NASYPY, WYKOPY

Lista 6. Kamil Matuszewski 13 kwietnia D n =

Równania prostych i krzywych; współrzędne punktu

Skrypt 23. Geometria analityczna. Opracowanie L7

Rachunek wektorowy - wprowadzenie. dr inż. Romuald Kędzierski

7. PLANIMETRIA.GEOMETRIA ANALITYCZNA

Przykładowe rozwiązania

22. CAŁKA KRZYWOLINIOWA SKIEROWANA

XXV Rozkosze Łamania Głowy konkurs matematyczny dla klas I i III szkół ponadgimnazjalnych. zestaw A klasa I

Wykłady z Matematyki stosowanej w inżynierii środowiska, II sem. 2. CAŁKA PODWÓJNA Całka podwójna po prostokącie

Rysowanie precyzyjne. Polecenie:

Funkcje liniowe i wieloliniowe w praktyce szkolnej. Opracowanie : mgr inż. Renata Rzepińska

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Matematyka I. Bezpieczeństwo jądrowe i ochrona radiologiczna Semestr zimowy 2018/2019 Wykład 12

Rasteryzacja (ang. rasterization or scan-conversion) Grafika rastrowa. Rysowanie linii (1) Rysowanie piksela


Informatyk i matematyk: dwa spojrzenia na jedno zadanie (studium przypadku) Krzysztof Ciebiera, Krzysztof Diks, Paweł Strzelecki

Wskazówki do zadań testowych. Matura 2016

Matematyka licea ogólnokształcące, technika

MATEMATYKA WYKAZ UMIEJĘTNOŚCI WYMAGANYCH NA POSZCZEGÓLNE OCENY DLA KLASY DRUGIEJ

O D P O W I E D Z I D O Z A D A Ń T E S T O W Y C H

Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem.

MATeMAtyka klasa II poziom rozszerzony

FUNKCJA LINIOWA, OKRĘGI

Lista zadań - Relacje

VII Olimpiada Matematyczna Gimnazjalistów

AUTORKA: ELŻBIETA SZUMIŃSKA NAUCZYCIELKA ZESPOŁU SZKÓŁ OGÓLNOKSZTAŁCĄCYCH SCHOLASTICUS W ŁODZI ZNANE RÓWNANIA PROSTEJ NA PŁASZCZYŹNIE I W PRZESTRZENI

Funkcje dwóch zmiennych

Transkrypt:

Grafika komputerowa Wykład 2 Algorytmy rastrowe Instytut Informatyki i Automatyki Państwowa Wyższa Szkoła Informatyki i Przedsiębiorczości w Łomży 2 0 0 9

Spis treści Spis treści 1 Algorytm Bresenhama - rysowanie odcinków 2 3 Algorytmy wypełniania obszarów (algorytm malarza) i wypełnianie trapezu

Spis treści Spis treści 1 Algorytm Bresenhama - rysowanie odcinków 2 3 Algorytmy wypełniania obszarów (algorytm malarza) i wypełnianie trapezu

Spis treści Spis treści 1 Algorytm Bresenhama - rysowanie odcinków 2 3 Algorytmy wypełniania obszarów (algorytm malarza) i wypełnianie trapezu

Algorytm Bresenhama Rysowanie odcinków Rysowanie odbywa się w pikselowym układzie współrzędnych, czyli przyjmujemy, że odległości pomiedzy pikselami wynoszą 1. Odcinek rysujemy pomiędzy współrzędnymi (x 0, y 0 ) a (x k, y k ).

Algorytm Bresenhama Rysowanie odcinków Rys. 1: Cztero- i ośmiokierunkowy wybór pikseli

Algorytm Bresenhama Rysowanie odcinków Rys. 2: Wybory pikseli przybliżających odcinek z wyborem cztero- i ośmiokierunkowym Schodkowość (kanciastość) możemy osłabić zmieniając jasność wybranych pikseli. Antyaliasing likwidowanie (wyrównywanie) kanciastości.

Algorytm Bresenhama Rysowanie odcinków Założenia: x 0 < x k, współczynnik kierunkowy 0 < dy/dx 1, gdzie dy = y k y 0 dx = x k x 0 Zaczynamy rysować od piksela P 0 = (x 0, y 0 ).

Algorytm Bresenhama Rysowanie odcinków Rys. 3: Wybór pomiędzy pikselami S i+1 a T i+1

Algorytm Bresenhama Rysowanie odcinków Kąt nachylenia odcinka: α (0, 45 ), więc musimy wybrać pomiędzy pikselem poziomym S i+1 a na skos T i+1. Odległości od nowych pikseli: s = dy dx (x i + 1 x 0 ) (y i y 0 ) t = (y i + 1 y 0 ) dy dx (x i+1 x 0 ) Sprawdzamy, co jest większe: s czy t? Określa to znak różnicy (s t). Odejmujemy więc stronami i mnożymy przez dx d i = dx(s t) = 2dy(x i x 0 ) 2dx(y i y 0 ) + 2dy dx

Algorytm Bresenhama Algorytm Bresenhama rysowania odcinków Dla i + 1 d i+1 = 2dy(x i+1 x i ) 2dy dx czyli więc d i+1 d i = 2dy(x i+1 x i ) 2dx(y i+1 y i ) d i+1 = d i + 2dy 2dx(y i+1 y i ) (x i+1 x i = 1)

Algorytm Bresenhama Algorytm Bresenhama rysowania odcinków Jeśli d i 0 P i+1 = T i+1, y i+1 = y i + 1 d i+1 = d i + 2(dy dx) Jeśli d i < 0 P i+1 = S i+1, y i+1 = y i d i+1 = d i + 2dy skąd dla i = 0 mamy d 0 = 2dy dx startowa zmienna decyzyjna

Algorytm Bresenhama Algorytm Bresenhama rysowania odcinków Start: P 0 = (x 0, y 0 ); dx = x k x 0 ; dy = y k y 0 ; dp = 2 dy; dd = 2 (dy dx); d 0 = 2 dy dx; dla i = 0, 1,..., x k x 0 1 x i+1 = x 1 + 1; jeśli d i 0, to {d i+1 = d i + dd; y i+1 = y i + 1 } w przeciwnym razie {d i+1 = d i + dp; y i+1 = y i } P i+1 = (x i+1, y i+1 )

Algorytm Bresenhama Rysowanie odcinków Oznaczenia: S ruch poziomy T ruch po przekątnej Przykład: narysuj odcinek (0, 0) (131, 16) Rozwiązanie: S 4 T (S 7 T ) 4 S 8 (S 7 T ) 5 S 8 T (S 7 T ) 4 S 4 Ta notacja ułatwia kompresję, skalowanie rysunków, obcinanie do zadanych kształtów, rysowanie wykresów z usuwaniem zasłoniętych linii.

Przy rysowaniu okręgu musimy uwzględnić aspekt urządzenia graficznego (równy stosunkowi odległości środków sąsiednich pikseli w poziomie do odległości środków sąsiednich pikseli w pionie). Zakładamy, że a = p/q jest liczbą wymierną, p, q liczby naturalne. Wprowadzamy dwa układy współrzędnych 0xy układ współrzędnych pikselowych 0XY układ współrzędnych rzeczywistych

złożenia Założenie: R promień okręgu jest liczba naturalną i leży w środku układu współrzędnych. Zadanie: Wybrać piksele przybliżające krzywą X 2 + Y 2 R 2 = 0 (zapis w układzie współrzędnych rzeczywistych) lub (ax) 2 + y 2 R 2 = 0 (zapis w układzie współrzędnych pikselowych), czyli f (x, y) = p 2 x 2 + q 2 y 2 q 2 R 2 = 0

Symetria ograniczamy się do jednej ćwiartki. Rozpoczynamy od P 0 = (0, R), w kierunku zgodnym z ruchem wskazówek zegara. Rys. 4: Podział ćwiartki okręgu na fragmenty w algorytmie Bresenhama

W punkcie Z (dzieli ćwiartkę na dwie części) współczynnik kierunkowy dy dx = f x = 2p2 x f y 2q 2 y = 1 W górnej ósemce (p 2 x < q 2 y) zwiększając x o 1 wybieramy P i+1 spośród A i B W dolnej ósemce (p 2 x < q 2 y) zmniejszamy y o 1 wybieramy P i+1 spośród B i C Jak wybierać?

Rys. 5: Wybór pikseli w algorytmie Bresenhama rysowania okręgu: a) we fragmencie 1; b) we fragmencie 2 O wyborze będzie decydować wartość f w punkcie środkowym S między alternatywnymi pikselami. Pierwszy fragment: jeśli f Si = f (x i + 1, y i 1/2) > 0, to S zewnątrz okręgu i wybieramy P i+1 = B jeśli f Si = f (x i + 1, y i 1/2) < 0, to S wewnątrz okręgu i wybieramy P i+1 = A

Rys. 6: Wybór pikseli w algorytmie Bresenhama rysowania okręgu: a) we fragmencie 1; b) we fragmencie 2 O wyborze będzie decydować wartość f w punkcie środkowym S między alternatywnymi pikselami. Drugi fragment: jeśli f Si = f (x i + 1/2, y i 1) > 0, to S zewnątrz okręgu i wybieramy P i+1 = C jeśli f Si = f (x i + 1/2, y i 1) < 0, to S wewnątrz okręgu i wybieramy P i+1 = B

Algorytm rysowania okręgu Start: x = 0; y = R; pp = p p; pp4 = 4 pp; pp8 = 8 pp; qq = q q; qq4 = 4 qq; qq8 = 8 qq; fx = 0; fy = qq8 R; fs = pp4 qq4 R + qq; dopóki fx < fy fs = fs (fx + fy)/2 + 3 (pp qq) dopóki y 0 P = (x, y); x = x + 1; fx = fx + pp8; jeśli fs 0, to fs = fs + fx + pp4; w przeciwnym razie {y = y 1; fy = fy qq8; fs = fs + fx + pp4 fy } P = (x, y); y = y 1; fy = fy qq8; jeśli fs 0, to { x = x + 1; fx = fx + pp8; fs = fs + fx fy + qq4 } w przeciwnym razie fs = fs fy + gg4

Spójność Zbiór pikseli jest spójny, jeśli do dowolnego piksela z tego zbioru można przejść do każdego innego przez piksele sąsiednie. gdy sąsiadów 4: zbiór czterospójny gdy sąsiadów 8: zbiór ośmiospójny

Spójność Rys. 7: Obszar o brzegu ośmiospójnym i dziurach (piksele czarne) wypełniony zbiorem czterospójnym (piksele białe)

Spójność Najczęściej rozważany przypadek: wnętrze obszaru jest zbiorem czterospójnym, a ograniczający brzeg ośmiospójnym. Niech brzeg został narysowany pewnym kolorem cb. Dopuśćmy istnienie dziur (wysp) wewnątrz obszaru będą nimi podobszary ograniczone ośmiospójnymi brzegami pikseli w kolorze cb. W szczególnym przypadku (np. cb czarny) dziurami mogą być pojedyncze piksele w tym kolorze. Podkreślmy, że kolorem cb mogą też być wyświetlone piksele leżące na zewnątrz zadanego obszaru. Znając ziarno (ang. seed), czyli piksel leżący wewnątrz obszaru, możemy wypełnić go nowym kolorem i próbować siać ten kolor (albo, inaczej, propagować przez spójność) w czterech kierunkach, tzn. sprawdzać, czy 4 sąsiednie piksele nalezą do wnętrza obszaru i czy nie zostały jeszcze wypełnione nowym kolorem. Dalej postępujemy tak samo, badając piksele sąsiadujące z sąsiadami ziarna itd. Ten rekurencyjny algorytm możemy przedstawić w formie podanej niżej procedury.

Wypełnienie obszaru przez sianie procedure fill4(x, y, cb, cn) {(x, y) - współrzędne piksela} begin {cb - kolor brzegu, cn - kolor wypełnienia} if color(x, y) cb and color(xy) cn then {kolor piksela (x, y) jest różny od cb i cn} setcolor(x, y, cb, cn); {wypełnienie piksela (x, y) kolorem cb} fill4(x, y 1, cb, cn); fill4(x, y + 1, cb, cn); {propagacja w czterech kierunkach} fill4(x 1, y, cb, cn); fill4(x + 1, y, cb, cn); end end

Wypełnienie obszaru przez sianie Zapis algorytmu jest bardzo prosty i krótki. Jego praktyczna realizacja może jednak sprawiać trudności i być kosztowna. Przy dużym obszarze głębokość rekurencji jest na ogół znaczna, a wtedy nierzadko następuje przepełnienie budowanego stosu. Algorytm jest rozrzutny kolor tego samego piksela bada się kilka razy, nawet pięciokrotnie. Opracowano wiele bardziej efektywnych metod. Dotyczą one najczęściej nie działania na poszczególnych pikselach, ale na ich grupach. Mogą to być na przykład poziome segmenty definiowane jako ciągi leżących wewnątrz obszaru pikseli sąsiadujących ze sobą w poziomie. Przyjmuje się, że taki ciąg ma maksymalną możliwą długość, a więc segment jest z lewej i z prawej strony ograniczony pikselami brzegowymi. Ponadto zakłada się, że nie zawiera on pikseli w nowym kolorze cn. Segment określają jednoznacznie współrzędne piksela leżącego najbardziej na lewo i długość (liczba tworzących go pikseli).

Wypełnienie trapezu Inny przypadek danych: obszar jest określony analitycznie jako wielokąt. Niech płaszczyzna rysunku będzie opisana współrzędnymi pikselowymi. Jako przykład rozpatrzymy wypełnianie trapezu o podstawach równoległych do osi 0x. Na ogół wierzchołki trapezu mają współrzędne rzeczywiste, czyli nie pokrywające się ze środkami pikseli, tak jak na rys. 8 Rys. 8: Wypełnianie trapezu

Wypełnienie trapezu Niech y min = round(y 1 ), a y max = round(y 3 ), gdzie round(r) jest zaokrągleniem liczby rzeczywistej r do najbliższej liczby całkowitej. Z założenia: y 1 = y 2 ; y 3 = y 4 Niech c l = x 4 x 1 y 4 y 1 ; c p = x 3 x 2 y 3 y 2 Przy tych oznaczeniach algorytm wypełniania trapezu może przebiegać następująco:

Wypełnienie trapezu dla y = y min, y min + 1, y min + 2,..., y max, wyznacz przecięcia x l i x p linii poziomej y z prostymi x = x 1 + (y y 1 )c l ; x = x 2 + (y y 2 )c p wypełnij nowym kolorem (wzorcem) piksele leżące na tej linii od round(x l ) do round(x p )

Wypełnienie trapezu Zauważmy, że dla y = y 1 = y 2 jest x l = x 1, x p = x 2 oraz że między przecięciami x l i x p obu prostych z linią poziomą y a przecięciami x l i x p z kolejną linią poziomą y + 1 zachodzą zależności x l = x l + c l ; x p = x p + c p Jeśli wykorzystamy te zależności, to algorytm uprości się do postaci

Wypełnienie trapezu podstaw x l = x 1 ; x p = x 2 dla y = y min, y min + 1, y min + 2,..., y max, wypełnij nowym kolorem (wzorcem) piksele leżące na tej linii od round(x l ) do round(x p ) zmień x l = x l + c l ; x p = x p + c p Zadanie wypełniania dowolnego wielokąta można sprowadzić do omówionego wyżej przypadku szczególnego. Każdy wielokąt można rozłożyć na sumę trapezów. Taki rozkład może być przydatny nie tylko do wypełniania obszaru danym kolorem (wzorcem), lecz także przy działaniach na wielokątach i przy rysowaniu obiektów trójwymiarowych z uwzględnieniem oświetlenia. Pozwala także zaoszczędzić obliczeń, gdy wielokrotnie wypełniamy obszary tego samego kształtu, ale różnej wielkości, na przykład przy drukowaniu mniejszych i większych czcionek ustalonego kroju.

Literatura Algorytm Bresenhama [1] J. E. Bresenham, Algorithm for computer control of a digital plotter, IBM Systems Journal, vol. 4, no. 1, 1965 [2] M. Jankowski, Elementy grafiki komputerowej, WNT, 2006

Koniec? :-( Algorytm Bresenhama Koniec wykładu 2