Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Grafika Komputerowa i wizualizacja Algorytmy rastrowe.

Podobne prezentacje


Prezentacja na temat: "Grafika Komputerowa i wizualizacja Algorytmy rastrowe."— Zapis prezentacji:

1 Grafika Komputerowa i wizualizacja Algorytmy rastrowe

2 Wprowadzenie W urządzeniu rastrowym obraz (kartka, ekran monitora i inne) składa się ze skończonej liczby podstawowych elementów nazywanych pikselami. Elementy te uporządkowane tworzą siatkę prostokątną. Wielkość lxk określa rozdzielczość danego urządzenia graficznego, a odległość między środkami sąsiednich pikseli w poziomie do odległości w pionie określa wartość aspektu danego urządzenia. Np. dla karty CGA aspekt=22/25, a dla karty EGA=4/5. Każdy rysunek rysowany na urządzeniu rastrowym tworzy się przez wyświetlenie (zaznaczenie) skończonej liczby pikseli. Problemem staje się wtedy wybór dyskretnego zbioru pikseli odwzorowującego np. krzywą ciągłą na płaszczyźnie.

3 Rysowanie odcinka – algorytm Bresenhama - założenia W większości zastosowań praktycznych dysponujemy współrzędnymi rzeczywistymi. Aby narysować odcinek we współrzędnych rastrowych musimy przejść do współrzędnych całkowitoliczbowych. Będzie rozważany zbiór pikseli ośmiospójny. Załóżmy, że x0

4 Rysowanie odcinka – algorytm Bresenhama - algorytm Zaczynamy od piksela P(x0,y0). Ponieważ kąt nachylenia odcinka jest mniejszy od 45 stopni to następny piksel wybieramy pośród S i+1 =(x i+1,yi) i T i+1 =(x i+1,y i+1 ). Wielkości s i t występujące na rysunku określone są wzorami: – s=dy/dx(x i+1 -x0)-y i -y0, – t=(y i+1 -y0)-dy/dx(x i+1 -x0).

5 Rysowanie odcinka – algorytm Bresenhama - algorytm Odejmując od siebie stronami oraz mnożąc przez dxi oznaczając ta wielkość przez d i mamy: – d i =(s-t)dx=2dy(x i -x 0 )-2dx(y i -y 0 )+2dy-dx. Ponieważ dx>0, to znak d i określa, która z wielkości s i t jest większa. Jeżeli d i >0, to s>t i za P i+1 przyjmiemy piksel T i+1, w przeciwnym przypadku jeżeli d i <0, to wybierzemy S i+1. Jeżeli d i =0, to oba piksele leżą w tej samej odległości i możemy założyć, że wybieramy np. P i+1 =T i+1.

6 Rysowanie odcinka – algorytm Bresenhama - algorytm Dalej możemy zmniejszyć koszt obliczeń badając zachowanie wzoru na d i dla i+1. Mamy: d i+1 =2dy(x i+1 -x0)-2dx(y i+1 -y0)+2dy-dx. Po odjęciu od siebie stronami mamy: – d i+1 -d i =2dy(x i+1 -x i )-2dx(y i+1 -y i ). Stąd, ponieważ x i+1 -x i =1, zachodzi: – d i+1 =d i +2dy-2dx(y i+1 -y i ).

7 Rysowanie odcinka – algorytm Bresenhama - algorytm Jeżeli d i >0 (wybieramy P i+1 =T i+1 ) to zależność powyższa upraszcza się do postaci: – d i+1 =d i +2(dy-dx), a jeżeli d i <0 to ponieważ y i+1 =y i mamy: – d i+1 =d i +2dy. Aby zależności rekurencyjne działały określamy wartość di dla i=0: – d 0 =2dy-dx.

8 Podsumowanie – algorytm końcowy (jedna z możliwych implementacji) Zadanie: narysować odcinek łączący P0(x0,y0) z Pk(xk,yk) przy założeniu: –dx=xk-x0>0, dy=yk-y0>0, 00 =>d i+1 = d i + 2(dy-dx) 2.d i+1 S i+1, d i+1 >0=> T i+1, gdy d i+1 =0, to losowy

9 Rysowanie odcinka – algorytm Bresenhama - podsumowanie Ostatecznie widać, że algorytm ogranicza się do działania na liczbach całkowitych. Zgodnie z przyjętymi oznaczeniami i założeniami możemy oznaczyć wybór punktu T i+1 jako T, a S i+1 jako S. Rysowanie odcinka możemy zapisać jako ciąg S i T, np. SSSTTTSSSTTT itd. lub (SSSTTT)^2 lub (S^3T^3)^2. Umożliwia to kompresję danych.

10 Rysowanie okręgu – algorytm Bresenhama W przypadku rysowania okręgu wartość aspektu jest ważna. Dlatego przyjmujemy, że mając dany układ rzeczywisty OXY i pikselowy oxy związki między tymi układami są następujące: – X=ax, Y=y. Uprościmy rysowanie okręgu do okręgu w środku układu i do promienia całkowitoliczbowego. Zadanie polega więc na przybliżeniu krzywej wybranym układem pikseli: – X 2 +Y 2 =R 2 lub we współrzędnych ekranowych (ax) 2 +y 2 =R 2.

11 Rysowanie okręgu – algorytm von Akenema Przyjmijmy, że a=p/q, a stąd mamy powyższą zależność możemy zapisać w postaci funkcyjnej: – f(x,y)=p 2 x 2 +q 2 y 2 -q 2 R 2 =0. Stosujemy układ ośmiokierunkowy (ośmiopikselowy) i ze względu na symetrię ograniczymy się do pierwszej ćwiartki. Zaczynamy od piksela P 0 (0,R). Punkt, w którym współczynnik kierunkowy wektora stycznego: dy/dx=-fx/fy=-2p 2 x/(2q 2 y)=-1 dzieli ćwiartkę okręgu na dwa fragmenty. W pierwszym fragmencie, dla którego zachodzi p 2 x

12 Rysowanie okręgu – algorytm von Akenema Jeżeli fs i =f(x i +1,y i -1/2)>0 to punkt S leży na zewnątrz okręgu i wtedy jako P i+1 wybieramy punkt B. Jeżeli fs i =f(x i+1,y i -1/2)<0 to S leży wewnątrz okręgu i wybieramy wtedy punkt A. Dla drugiego przypadku obliczamy fs i =f(x i +1/2,y i -1) i wybieramy – P i+1 =C, gdy fs i >0 i – P i+1 =B gdy fs i <0.

13 Rysowanie okręgu – algorytm von Akenema Jeżeli fs i =0, to wybieramy dowolny punkt. Dla startowego piksela P 0 (0,R) mamy: – fs 0 =f(x 0 +1,y 0 -1/2)=p 2 (0+1) 2 +q 2 (R-1/2) 2 -q 2 R 2 =p 2 -q 2 R+q 2 /4 Dla pierwszego wariantu (p 2 x

14 Rysowanie okręgu – algorytm von Akenema W drugim przypadku (przy przejściu od P i do P i+1 =B) mamy x i+1 =x i +1, y i =y i -1 i zachodzi: – f(x i+1 +1,y i+1 -1/2)=p 2 (x i+1 +1) 2 +q 2 (y i -1/2-1) 2 -q 2 R 2 =f(x i +1,y i -1/2)+2p 2 x i+1 +p 2 - 2q 2 y i+1 lub krócej – fs i+1 =fs i +2p 2 x i+1 +p 2 -2q 2 y i+1. Dla drugiego wariantu możemy przeprowadzić podobne rozważania otrzymamy wtedy: dla przejścia od P i do P i+1 =B (x i+1 =x i +1, y i+1 =y i -1) mamy – f(x i+1 +1,y i+1 -1/2)=p 2 (x i +1+1) 2 +q 2 (y i -1-1/2) 2 -q 2 R 2 =f(x i +1,y i -1/2)+2p 2 x i+1 +p 2 - 2q 2 y i+1 A po uproszczeniach – fs i+1 =fs i +2p 2 x i+1 +p 2 -2q 2 y i+1. dla przejścia od Pi do Pi+1=C (x i+1 =x i, y i+1 =y i -1) mamy – fs i+1 =fs i -2q 2 y i+1 +q 2.

15 Rysowanie okręgu – inne algorytmy W przypadku, gdy chcemy wyznaczyć punkty okręgu niekoniecznie wszystkie piksele sąsiednie można skorzystać z innej metody. Polega ona na tym,że okrąg możemy zapisać we współrzędnych biegunowych następująco: – X=Rcos , – Y=Rsin , Gdzie  <0,360). Łatwo otrzymujemy: – dX/d  =-Rsin  =-Y, – dY/d  =Rcos  =X z warunkami początkowymi: – X(0)=R, – Y(0)=0. Taki układ możemy rozwiązać np. z krokiem h=360/(N+1)np. metodą Eulera lub niejawną metodą Eulera, np. – X 0 =R, Y 0 =0 – X i+1 =X i -hY i, – Y i+1 =Y i +hX i+1. Dla i=0,1,...,N.


Pobierz ppt "Grafika Komputerowa i wizualizacja Algorytmy rastrowe."

Podobne prezentacje


Reklamy Google