Računarska grafika - vežbe. 9 Rasterizacija kružnice

Σχετικά έγγραφα
Računarska grafika. Rasterizacija linije

Računarska grafika. Rasterizacija linije

PRAVA. Prava je u prostoru određena jednom svojom tačkom i vektorom paralelnim sa tom pravom ( vektor paralelnosti).

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka

2 tg x ctg x 1 = =, cos 2x Zbog četvrtog kvadranta rješenje je: 2 ctg x

Pismeni ispit iz matematike GRUPA A 1. Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj, zatim naći 4 z.

Pismeni ispit iz matematike Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: ( ) + 1.

Zavrxni ispit iz Matematiqke analize 1

IZVODI ZADACI (I deo)

IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f

TRIGONOMETRIJA TROKUTA

Ispitivanje toka i skiciranje grafika funkcija

3.1 Granična vrednost funkcije u tački

SISTEMI NELINEARNIH JEDNAČINA


Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu

Matematka 1 Zadaci za drugi kolokvijum

Osnovni primer. (Z, +,,, 0, 1) je komutativan prsten sa jedinicom: množenje je distributivno prema sabiranju

Prvi kolokvijum. y 4 dy = 0. Drugi kolokvijum. Treći kolokvijum

DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović

Konstruktivni zadaci. Uvod

Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A

RIJEŠENI ZADACI I TEORIJA IZ

Konstruisati efikasan algoritam znači dati skup preciznih uputstava kako doći do rešenja zadatog problema Algoritmi se mogu opisivati:

MATEMATIKA 2. Grupa 1 Rexea zadataka. Prvi pismeni kolokvijum, Dragan ori

5. PARCIJALNE DERIVACIJE

41. Jednačine koje se svode na kvadratne

APROKSIMACIJA FUNKCIJA

Iskazna logika 3. Matematička logika u računarstvu. novembar 2012

Zadatak 1 Dokazati da simetrala ugla u trouglu deli naspramnu stranu u odnosu susednih strana.

1.4 Tangenta i normala

MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15

Betonske konstrukcije 1 - vežbe 3 - Veliki ekscentricitet -Dodatni primeri

Trigonometrija 2. Adicijske formule. Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto

18. listopada listopada / 13

Obrada signala

MATERIJAL ZA VEŽBE. Nastavnik: prof. dr Nataša Sladoje-Matić. Asistent: dr Tibor Lukić. Godina: 2012

( , 2. kolokvij)

(P.I.) PRETPOSTAVKA INDUKCIJE - pretpostavimo da tvrdnja vrijedi za n = k.

5. Karakteristične funkcije

Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu

Elementarni zadaci iz Euklidske geometrije II

Trigonometrijske nejednačine

Cauchyjev teorem. Postoji više dokaza ovog teorema, a najjednostvniji je uz pomoć Greenove formule: dxdy. int C i Cauchy Riemannovih uvjeta.

IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo

Sistemi veštačke inteligencije primer 1

Teorijske osnove informatike 1

( ) ( ) 2 UNIVERZITET U ZENICI POLITEHNIČKI FAKULTET. Zadaci za pripremu polaganja kvalifikacionog ispita iz Matematike. 1. Riješiti jednačine: 4

Matematika 1 - vježbe. 11. prosinca 2015.

- pravac n je zadan s točkom T(2,0) i koeficijentom smjera k=2. (30 bodova)

Inženjerska grafika geometrijskih oblika (5. predavanje, tema1)

Zadatak 2 Odrediti tačke grananja, Riemann-ovu površ, opisati sve grane funkcije f(z) = z 3 z 4 i objasniti prelazak sa jedne na drugu granu.

numeričkih deskriptivnih mera.

Pismeni dio ispita iz Matematike Riješiti sistem jednačina i diskutovati rješenja u zavisnosti od parametra a:

Ispit održan dana i tačka A ( 3,3, 4 ) x x + 1

Klasifikacija blizu Kelerovih mnogostrukosti. konstantne holomorfne sekcione krivine. Kelerove. mnogostrukosti. blizu Kelerove.

4 Numeričko diferenciranje

TAČKA i PRAVA. , onda rastojanje između njih računamo po formuli C(1,5) d(b,c) d(a,b)

Aksiome podudarnosti

RAČUNSKE VEŽBE IZ PREDMETA POLUPROVODNIČKE KOMPONENTE (IV semestar modul EKM) IV deo. Miloš Marjanović

Fakultet tehničkih nauka, Softverske i informacione tehnologije, Matematika 2 KOLOKVIJUM 1. Prezime, ime, br. indeksa:

Osnovne teoreme diferencijalnog računa

M086 LA 1 M106 GRP. Tema: Baza vektorskog prostora. Koordinatni sustav. Norma. CSB nejednakost

Zadaci iz trigonometrije za seminar

π π ELEKTROTEHNIČKI ODJEL i) f (x) = x 3 x 2 x + 1, a = 1, b = 1;

ELEKTROTEHNIČKI ODJEL

Numerička matematika 2. kolokvij (1. srpnja 2009.)

O trouglu. mr Radmila Krstić, asistent Prirodno-matematički fakultet, Niš

7 Algebarske jednadžbe

PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je,

1 UPUTSTVO ZA IZRADU GRAFIČKOG RADA IZ MEHANIKE II

Linearna algebra 2 prvi kolokvij,

KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI. NEUTRALNI ELEMENT GRUPOIDA.

POTPUNO RIJEŠENIH ZADATAKA PRIRUČNIK ZA SAMOSTALNO UČENJE

Operacije s matricama

Kaskadna kompenzacija SAU

IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI)

Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama.

OBRTNA TELA. Vladimir Marinkov OBRTNA TELA VALJAK

Racionalni algebarski izrazi

Glava 1. Vektori. Definicija 1.1. Dva vektora su jednaka ako su im jednaki pravac, smer i intenzitet.

10. STABILNOST KOSINA

I.13. Koliki je napon između neke tačke A čiji je potencijal 5 V i referentne tačke u odnosu na koju se taj potencijal računa?

KONVEKSNI SKUPOVI. Definicije: potprostor, afin skup, konveksan skup, konveksan konus. 1/5. Back FullScr

DRUGI KOLOKVIJUM IZ MATEMATIKE 9x + 6y + z = 1 4x 2y + z = 1 x + 2y + 3z = 2. je neprekidna za a =

TRIGONOMETRIJSKE FUNKCIJE I I.1.

Veleučilište u Rijeci Stručni studij sigurnosti na radu Akad. god. 2011/2012. Matematika. Monotonost i ekstremi. Katica Jurasić. Rijeka, 2011.

Program testirati pomoću podataka iz sledeće tabele:

a M a A. Može se pokazati da je supremum (ako postoji) jedinstven pa uvodimo oznaku sup A.

4.7. Zadaci Formalizam diferenciranja (teorija na stranama ) 343. Znajući izvod funkcije x arctg x, odrediti izvod funkcije x arcctg x.

radni nerecenzirani materijal za predavanja R(f) = {f(x) x D}

Riješeni zadaci: Nizovi realnih brojeva

Riješeni zadaci: Limes funkcije. Neprekidnost

Elementi spektralne teorije matrica

OTPORNOST MATERIJALA

2. Ako je funkcija f(x) parna onda se Fourierov red funkcije f(x) reducira na Fourierov kosinusni red. f(x) cos

Reverzibilni procesi

III VEŽBA: FURIJEOVI REDOVI

IZVODI ZADACI (I deo)

ZBIRKA POTPUNO RIJEŠENIH ZADATAKA

Transcript:

Računarska grafika - vežbe 9 Rasterizacija kružnice

Rasterizacija kružnice (1/10) Pretpostavka: kružnica se crta u koordinatnom početku Trivijalan algoritam x = R cos(α), y = R sin(α), α [0,2π] menjajući α u malim koracima, dobija se skup tačaka koje aproksimiraju kružnicu Loše osobine: trigonometrijske funkcije su spore korak α je inverzno proporcionalan vrednosti R 03.05.2017. Rasterizacija kružnice 2 α R 1

Rasterizacija kružnice (2/10) Kružnica sa centrom u tački (cx,cy) se crta funkcijom: void kruznica(int cx, int cy, int r){ float deltaalfa = atan(1.0f/r); for(float alfa=0; alfa<6.28; alfa+=deltaalfa) crtajtacku(cx+r*cos(alfa),cy+r*sin(alfa)); 03.05.2017. Rasterizacija kružnice 3

Rasterizacija kružnice (3/10) Efikasniji algoritam koristi centralnu simetriju kružnice računa koordinate tačaka za 1/8 kružnice, ostale preslikava M 3 M 2 M1 M 1 = (x,y) M 2 = (y,x) M 5 = (-x,-y) M 6 = (-y,-x) M 4 M 3 = (-y,x) M 7 = (y,-x) M 4 = (-x,y) M 8 = (x,-y) M 5 M 8 M 6 M 7 03.05.2017. Rasterizacija kružnice 4

Rasterizacija kružnice (4/10) void crtaj8tacaka(float cx, float cy, float dx, float dy){ crtajtacku(cx+dx, cy+dy); // M1 crtajtacku(cx-dx, cy+dy); // M4 M 3 crtajtacku(cx+dx, cy-dy); // M8 M 4 crtajtacku(cx-dx, cy-dy); // M5 M 2 M1 crtajtacku(cx+dy, cy+dx); // M2 crtajtacku(cx-dy, cy+dx); // M3 M 5 M 8 crtajtacku(cx+dy, cy-dx); // M7 crtajtacku(cx-dy, cy-dx); // M6 M 6 M 7 void kruznica(int cx, int cy, int r) { float deltaalfa = atan(1.0f/r); for(float alfa=0; alfa<0.79; alfa+=deltaalfa) crtaj8tacaka(cx, cy, r*cos(alfa), r*sin(alfa)); 03.05.2017. Rasterizacija kružnice 5

Rasterizacija kružnice (5/10) Bresenham/Michener-ov algoritam posmatra se prvi oktant kružnice počinje tačkom (R, 0) i napreduje u smeru nasuprot kretanja kazaljke časovnika, do ugla 45. prolazi kroz tačku P odlučuje se o izboru između dve kandidat-tačke (A i B) između kojih prolazi kružna linija A B C P 03.05.2017. Rasterizacija kružnice 6

Rasterizacija kružnice (6/10) Pretpostavka: kružnica je prošla kroz tačku P(x,y) Treba odlučiti da li će proći kroz A(x-1, y+1) ili B(x, y+1) Da li je moguće da prođe kroz C? ne, jer posmatrani luk pripada prvom oktantu 03.05.2017. Rasterizacija kružnice 7

Rasterizacija kružnice (7/10) Uvodi se pojam kvadradtne greške u tački K odstupanje u odnosu na geometrijski tačnu kružnicu e(k) = x k2 + y k2 R 2 e(k) > 0, za K izvan kruga e(k) = 0, za K na kružnici e(k) < 0, za K unutar kruga U tački A (e<0): e(a) = (x-1) 2 + (y+1) 2 - R 2 U tački B (e>0): e(b) = x 2 + (y+1) 2 - R 2 03.05.2017. Rasterizacija kružnice 8

Rasterizacija kružnice (8/10) Algebarski zbir grešaka je: d=e(a) + e(b) A, B unutar kruga (teoretski): e(a)<0, e(b)<0 d<0, bira se B A, B izvan kruga (teoretski): e(a)>0, e(b)>0 d>0, bira se A A unutar, B izvan kruga: e(a)<0, e(b)>0 e(a) > e(b) d<0, bira se B e(a) < e(b) d>0, bira se A Uočava se zakonitost: d<0 bira se B; d>0 bira se A Ako je izabrano A, dekrementira se X; Y se uvek inkrementira A B P 03.05.2017. Rasterizacija kružnice 9

Rasterizacija kružnice (9/10) U i-tom koraku: d i = (x-1) 2 + (y+1) 2 R 2 + x 2 + (y+1) 2 R 2 = 2x 2 + 2y 2 2R 2 + 3 2x +4y U početnom koraku: d 0 = d i (R,0) = 3-2R U (i+1) koraku: za d i > 0 (A): d i+1 = (x-2) 2 + (y+2) 2 R 2 + (x-1) 2 + (y+2) 2 R 2 = 2x 2 + 2y 2 2R 2 + 3 2x +4y + 10 4x+4y = d i + 4(y-x) + 10 za d i < 0 (B) d i+1 = (x-1) 2 + (y+2) 2 R 2 + x 2 + (y+2) 2 R 2 = 2x 2 + 2y 2 2R 2 + 3 2x +4y + 6 + 4y = d i + 4y + 6 03.05.2017. Rasterizacija kružnice 10

Rasterizacija kružnice (10/10) void kruznica(int cx, int cy, int r) { int d = 3-2*r; int x=r, y=0; while(x>y) { crtaj8tacaka(cx, cy, x, y); if(d<0) d+=4*y+6; else { d+=4*(y-x)+10; x--; y++; if(x==y) crtaj8tacaka(cx, cy, x, y); 03.05.2017. Rasterizacija kružnice 11

Zadatak 1 a) U jednostavnom algoritmu za crtanje kružnice uz pomoć trigonometrijskih funkcija izvesti zavisnost koraka ugla Δα od poluprečnika kružnice. Korak ugla mora biti maksimalan, ali istovremeno mora da obezbedi neprekidnost kružnice. Kružnica je neprekidna ukoliko je udaljenost svake njene dve susedne tačke (za dva ugla čija je razlika Δα) po svakoj od koordinata najviše 1. Pretpostaviti da je r dovoljno veliko i da važi: sin(δα ) = Δα. b) Naći odnos broja poziva procedure za crtanje tačke jednostavnog trigonometrijskog algoritma kome je korak ugla postavljen kao pod a) i broja poziva procedure za crtanje tačke Bresenham/Michener-ovog algoritma za crtanje kružnice istog poluprečnika. Odnos dati za dovoljno velike poluprečnike kružnice c) Koji efekat nije uzet u obzir odnosom izračunatim u tački (b), a značajno doprinosi relativnoj prednosti brzine Bresenhamovog algoritma? 03.05.2017. Rasterizacija kružnice 12

Zadatak 1 rešenje (1/2) a) Δα =arctg(1/r) 1/r α 1 b) Jednostavan algoritam: n j r 2π = = 2πr α Bresenham/Michener-ov algoritam: 1/8 kruga se crta uz inkrementiranje y, sve dok x<y 2 2 2 2 r 8r r = x + y = 2y y = nb = 2 2 n j 2πr Dakle, odnos je: = 1.11 n 4 2r b 03.05.2017. Rasterizacija kružnice 13

Zadatak 1 rešenje (2/2) c) Nije uzeta u obzir činjenica: Bresenham-ov algoritam radi samo sa celim brojevima, jednostavan algoritam radi sa realnim brojevima i koristi trigonometrijske funkcije 03.05.2017. Rasterizacija kružnice 14

Zadatak 2 Korišćenjem Bresenhamovog algoritma za crtanje kružnice kao osnove i rutine za crtanje linije Line(x1,y1,x2,y2) koja crta liniju od tačke (x1,y1) do tačke (x2,y2), napisati program za crtanje popunjenog prstena sa centrom u tački (xp,yp), spoljnog poluprečnika Rs i unutrašnjeg poluprečnika Ru (smatrati da je Rs>Ru). 03.05.2017. Rasterizacija kružnice 15

Zadatak 2 rešenje (1/5) Ideja: napraviti matricu koordinata tacke[maxy][2] popunjavati u opsegu unutrašnjeg kruga: tacke[y][0], a zatim spoljašnjeg kruga: tacke[y][1] tacke[y][0] će ostati? za y-opseg koji ne obuhvata unutrašnji krug u opsegu unutrašnjeg: za dato y crta se od tacke[y][0] do tacke[y][1] u opsegu spoljašnjeg: za dato y crta se od tacke[y][1] do tacke[y][1] y x0 x1 x0 x1 0 3 6 1 2 6......... y MaxY? 4 03.05.2017. Rasterizacija kružnice 16

/* smesta u niz izracunatu i njoj simetricnu tacku simetrala je prava y=x */ void ubaci2(int tacke[][], int index, int x, int y) { Zadatak 2 rešenje (2/5) tacke[y][index] = x; tacke[x][index] = y; 03.05.2017. Rasterizacija kružnice 17

Zadatak 2 rešenje (3/5) void crtaj2(int tacke[][], int y, int xc, int yc){ Line(xc-tacke[y][1], yc+y, xc+tacke[y][1], yc+y); Line(xc-tacke[y][1], yc-y, xc+tacke[y][1], yc-y); void crtaj4(int tacke[][], int y, int xc, int yc){ Line(xc-tacke[y][1], yc+y, xc-tacke[y][0], yc+y); Line(xc+tacke[y][0], yc+y, xc+tacke[y][1], yc+y); Line(xc-tacke[y][1], yc-y, xc-tacke[y][0], yc-y); Line(xc+tacke[y][0], yc-y, xc+tacke[y][1], yc-y); 03.05.2017. Rasterizacija kružnice 18

Zadatak 2 rešenje (4/5) void prsten(int xp, int yp, int Ru, int Rs){ int tacke[max_index][2]; int x,y,d; // unutrasnji krug x=ru; y=0; d=3-2*ru; while(x>=y) { ubaci2(tacke,0,x,y); if( d < 0 ) d += 4*y+6; else {d += 4*(y-x)+10; x--; y++; 03.05.2017. Rasterizacija kružnice 19

Zadatak 2 rešenje (5/5) // spoljasnji krug x=rs; y=0; d=3-2*rs; while(x>=y) { ubaci2(tacke,1,x,y); if(d < 0 ) d += 4*y+6; else {d += 4*(y-x)+10; x--; y++; // crtanje do visine unutrasnjeg poluprecnika for(y=0; y<=ru; y++) crtaj4(tacke, y, xp, yp); // crtanje ostatka for(y=ru+1; y<=rs; y++) crtaj2(tacke, y, xp, yp); 03.05.2017. Rasterizacija kružnice 20

Primeri ispitnih zadataka 03.05.2017. Rasterizacija kružnice 21