Računarska grafika. 28. Rasterizacija. Malo matematike. Rasterizacija. Druge korisne formule. Jednačine linije

Similar documents
Mathcad sa algoritmima

Projektovanje paralelnih algoritama II

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

TEORIJA SKUPOVA Zadaci

Red veze za benzen. Slika 1.

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

Računarska grafika-vežbe. 8 JavaFX 3D mreža i tekstura

Geometrija (I smer) deo 3: Linije u ravni

KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom.

Geometrijski smisao rješenja sustava od tri linearne jednadžbe s tri nepoznanice

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

Uvod u relacione baze podataka

KVADRATNE INTERPOLACIJSKE METODE ZA JEDNODIMENZIONALNU BEZUVJETNU LOKALNU OPTIMIZACIJU 1

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu

ODREĐIVANJE DINAMIČKOG ODZIVA MEHANIČKOG SUSTAVA METODOM RUNGE-KUTTA

NAPREDNI FIZIČKI PRAKTIKUM 1 studij Matematika i fizika; smjer nastavnički MJERENJE MALIH OTPORA

Integration - Past Edexcel Exam Questions

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

Metoda parcijalnih najmanjih kvadrata: Regresijski model

A repeated root is a root that occurs more than once in a polynomial function.

Fraktali - konačno u beskonačnom

povezuju tačke na četiri različita načina (pravom linijom, splajnom,

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni nastavnički studij matematike i informatike. Sortiranje u linearnom vremenu

Optimizacija Niza Čerenkovljevih teleskopa (CTA) pomoću Monte Carlo simulacija

Maja Antolović Algoritmi u teoriji brojeva

Vedska matematika. Marija Miloloža

Hornerov algoritam i primjene

REVIEW OF GAMMA FUNCTIONS IN ACCUMULATED FATIGUE DAMAGE ASSESSMENT OF SHIP STRUCTURES

Termodinamika. FIZIKA PSS-GRAD 29. studenog Copyright 2015 John Wiley & Sons, Inc. All rights reserved.

Chapter 2: Inequalities, Functions, and Linear Functions

TI-80. Two-Point Form of a Line. Simple Interest Program. Graph Reflection Program. Quadratic Formula Program

PhysicsAndMathsTutor.com

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

Metrički prostori i Riman-Stiltjesov integral

24. Balkanska matematiqka olimpijada

DISTRIBUIRANI ALGORITMI I SISTEMI

ALTERNATIVNI PRISTUPI U IZUČAVANJU RAVANSKIH KRIVIH

FIZIKALNA SIMULACIJA SUDARA KONKAVNIH KRUTIH TIJELA

Fibonaccijev brojevni sustav

Lesson 5 Practice Problems

ECE Lecture #9, Part 1

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Preddiplomski sveučilišni studij matematike. Završni rad. Tema : Vedska matematika

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS

Standard Parallel and Secant Parallel in Azimuthal Projections

AIR CURTAINS VAZDU[NE ZAVESE V H

Pojačavanje konceptualnog razumevanja tangente uz pomoć Web tehnologija

Ordinary Differential Equations

Topic 6a Numerical Integration

CHAPTER 1. Functions and Linear Models

AUTOMATIZACIJA AUTOMATIZACIJA. Proces kontrole i upravljanja zahtijeva kontinuirano mjerenje. znanje i informacije. Osnovni tipovi sustava

Mjerenje snage. Na kraju sata student treba biti u stanju: Spojevi za jednofazno izmjenično mjerenje snage. Ak. god. 2008/2009

Quasi-Newtonove metode

TEHNIČKO REŠENJE. Algoritam za određivanje graničnih linija impedansi za rezistivno-reaktivnu klasu-b/j pojačavača snage

ALGORITAM FAKTORIZACIJE GNFS

Kontinualni lokacijski modeli. Jelena Panić 748/15 Vidosava Antonović 819/15

ANALYSIS OF INFLUENCE OF PARAMETERS ON TRANSFER FUNCTIONS OF APERIODIC MECHANISMS UDC Života Živković, Miloš Milošević, Ivan Ivanov

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008

Ariana Trstenjak Kvadratne forme

An Algorithm for Computation of Bond Contributions of the Wiener Index

Turingovi strojevi Opis Turingovog stroja Odluµcivost logike prvog reda. Lipanj Odluµcivost i izraµcunljivost

Računarska grafika Beleške za predavanja

Uvod. Rezonantno raspršenje atomskim jezgrama Veoma precizna mjerenja na energetskoj skali Komplikacije Primjena

Solutions to Assignment #8 Math 501 1, Spring 2006 University of Utah

At right: Closeups of the graphs of. with WINDOW settings Xmin=-1, Xmax=1, Xscl=0.1, Ymin=-1, Ymax=1, Yscl=0.1

Realizacija i ocjena MPPT algoritama u fotonaponskom sistemu napajanja

Formule za udaljenost točke do pravca u ravnini, u smislu lp - udaljenosti math.e Vol 28.

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku

Veleučilište u Rijeci. Dodjela procesora (eng. CPU scheduling)

DIFFERENTIAL EQUATIONS

Rekurzivni algoritmi POGLAVLJE Algoritmi s rekurzijama

Jasna Kellner. snowman. twigs 5 snowflakes. snow. carrot. nose. hands school. hat. ice. head. mountain. window

Modified Zagreb M 2 Index Comparison with the Randi} Connectivity Index for Benzenoid Systems

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

O MATLAB-U Što je MATLAB? MATLAB je naročito dobar za. Elektrotehnika. Kako se i gdje sve Matlab koristi u tehnici?

Neke osobine popločavanja ravni

Harun Kuč : Statistika u Excelu. Izdavač : Weling SD Zenica Za izdavača : Damir Bajramović. Recenzenti : Dr. Hasan Zolić Dr.

DIFFERENTIAL EQUATIONS

Formalni postupci u oblikovanju računalnih sustava

Initial Value Problems

Položaj nultočaka polinoma

2.2 Separable Equations

Konstekstno slobodne gramatike

PREDAVANJA. Igor Vujović. Split, 2016.

Primjena optimizacije kolonijom mrava na rješavanje problema trgovačkog putnika

Senior Team Maths Challenge Regional Final 2008 Mini Relay Round

Matematika (PITUP) Prof.dr.sc. Blaženka Divjak. Matematika (PITUP) FOI, Varaždin

PRIKAZ BALASOVOG ALGORITMA ZA 0-1 PROGRAMIRANJE

Sveučilišni studijski centar za stručne studije. Zavod za matematiku i fiziku. Uvod u Matlab. Verzija 1.1

Oracle Spatial Koordinatni sustavi, projekcije i transformacije. Dalibor Kušić, mag. ing. listopad 2010.

Simetrične matrice, kvadratne forme i matrične norme

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA

Vektori u ravnini i prostoru. Rudolf Scitovski, Ivan Vazler. 10. svibnja Uvod 1

Sveučilište Josipa Jurja Strossmayera u Osijeku Odjel za matematiku

Pojam funkcije u nastavi matematike nekad i danas

MAGNETIC FIELD OF ELECTRICAL RADIANT HEATING SYSTEM

The Prediction of. Key words: LD converter, slopping, acoustic pressure, Fourier transformation, prediction, evaluation

Transcription:

28. Rasterizacija Računarska grafika Rasterizacija linija DDA algoritam Bresenhamov algoritam predavanja doc.dr. Samir Lemeš slemes@mf.unze.ba Rasterizacija kruga Rasterizacija elipse Rasterizacija Malo matematike Pretvaranje iz kontinuiranog u diskretno Data je treća tačka na liniji: P = (X,Y) 6 5 P = (X,Y) Nagib = (Y - Y 1 )/(X - X 1 ) = (Y 2 -Y 1 )/(X 2 -X 1 ) 4 3 P2 = (X2,Y2) Rješenje po Y Y = [(Y 2 -Y 1 )/(X 2 -X 1 )]X + [-(Y 2 -Y 1 )/(X 2 -X 1 )]X 1 + Y 1 ili Y = mx + b 2 1 P1 = (X1,Y1) 1 2 3 4 5 6 Jednačine linije Druge korisne formule Pitanje: Koji je implicitni oblik jednačine linije? Ax + By + C = 0 Pitanje: Ako se znaju koordinate tačke (x,y), šta se dobije uvrštavanjem tih vrijednosti u jednačinu linije? Da li je tačka: Na liniji: Ax + By + C = 0 "Iznad" linije: Ax + By + C > 0 "Ispod" linije: Ax + By + C < 0 Dužina segmenta linije između P 1 ip 2 : L = [ (X 2 -X 1 ) 2 + (Y 2 -Y 1 ) 2 ] Srednja tačka segmenta linije između P 1 i P 3 : P 2 = ( (X 1 +X 3 )/2, (Y 1 +Y 3 )/2 ) Dvije linije su okomite ako je 1) M 1 = -1/M 2 2) Kosinus ugla između njih 0. 1

Parametarski oblik jednačine 2D Linije Date su tačke P 1 = (X 1, Y 1 ) i P 2 = (X 2, Y 2 ) X = X 1 + t(x 2 -X 1 ) Y = Y 1 + t(y 2 -Y 1 ) t se naziva "parametar". Kad je t = 0 dobije se (X 1,Y 1 ) t = 1 dobije se (X 2,Y 2 ) Osnovni algoritmi za liniju i krug 1. Moraju se izračunati cjelobrojne koordinate piksela koji leže na ili u blizini linije ili kruga. 2. Algoritmi za vrednovanje piksela se pozivaju stotinama ili hiljadama puta svaki put kad se slika kreira ili promijeni. 3. Linije moraju formirati vizualno prihvatljive slike. Linije moraju izgledati prave Linije moaju imati precizno definisane krajeve Linije moraju imati konstantnu debljinu Debljina linije ne smije zavisiti od dužine i nagiba linije. 4. Algoritmi za linije moraju uvijek biti definisani. Kako je 0 < t < 1 dobiju se sve ostale tačke na segmentu linije između (X 1,Y 1 ) i (X 2,Y 2 ). Jednostavni DDA algoritam za linije {Zasnovan na parametarskoj jednačini linije} Procedure DDA(X1,Y1,X2,Y2 :Integer); Var Length, I :Integer; X,Y,Xinc,Yinc :Real; Length := ABS(X2 - X1); If ABS(Y2 - Y1) > Length Then Length := ABS(Y2-Y1); Xinc := (X2 - X1)/Length; Yinc := (Y2 - Y1)/Length; X := X1; Y := Y1; For I := 0 To Length Do Plot(Round(X), Round(Y)); X := X + Xinc; Y := Y + Yinc End {For} End; {DDA} Digital Differential Analyzer (Digitalni diferencijalni analizator) DDA kreira dobre linije ali je prespor zbog funkcije "round" i sporih operacija nad realnim brojevima. DDA primjer Izračunati koji pikseli trebaju biti uključeni da prikažu liniju od (6,9) do (11,12). Dužina := Max od (ABS(11-6), ABS(12-9)) = 5 Xinc := 1 Yinc := 0.6 Izračunate vrijednosti su: (6,9), (7,9.6), (8,10.2), (9,10.8), (10,11.4), (11,12) 13 12 11 10 9 6 7 8 9 10 11 12 13 Jednostavni algoritmi za krug Jednačina kruga radijusa r sa centrom u (0,0) glasi: x 2 + y 2 = r 2, očigledno treba nacrtati: y = ± (r 2 -x 2 ) za -r <= x <= r. Bresenhamov algoritam Pretpostavka: crtanje linije nagiba m od 0 do 1 +y To funkcioniše, ali je neefikasno zbog množenja i kvadratnog korijena. Također kreira velike greške u krugu za vrijednosti x koje su blizu R. -x +x Bolji pristup, koji je još uvijek neefikasan, ali izbjegava greške je crtanje: x = r cosø y = r sinø tako da ø uzima vrijednosti od 0 do 360 stepeni. Koristi se implicitna jednačina linije: y = mx + B gdje je m nagib linije a B je presjek sa y. -y 2

Brze linije Sljedeći piksel je desno (E) ili desno gore (NE) NE na (x+1, y+1) Brze linije varijabla odluke d i = f(x i +1,y i + 1/2 ) = a(x i +1) + b(y i + 1/2) + c = ax i + by i + c + a + b/2 = f(x i, y i ) + a + b/2 P na (x,y) d u srednjoj tački (x+1, y+1/2) E na (x+1,y) Ako je d pozitivno linija siječe iznad srednje tačke i bliža je tački T. Ako je d negativno, linija siječe ispod srednje tačke i bliža je tački S. Da bi se izabrala prava tačka treba samo znati predznak tačke d. d i je poznata kao varijabla odluke. Algoritam: Ako je d i 0 izaberi NE = (x i + 1, y i + 1) kao sljedeću tačku d i+1 = f(x i+1 + 1, y i+1 + 1/2) = f(x i +1+1,y i +1+1/2) = a(x i +1+1) + b(y i +1+1/2) + c = f(x i + 1, y i + 1/2) + c + a + b (vidi prvi red iznad) = d i + a + b A ako nije, izaberi E = (x i + 1, y i ) kao sljdeću tačku d i+1 = f(x i+1 + 1, y i+1 + 1/2) = f(x i +1+1,y i +1/2) = a(x i +1+1) + b(y i +1/2) + c = f(x i + 1, y i + 1/2) + a = d i + a Bresenhamov algoritam za liniju Samo vrijednost koja nije cjelobrojna je b/2 u početnoj varijabli odluke. Može se pomnožiti sa 2 da bi se izbjeglo dijeljenje. {Bresenham za linije s nagibom od 0 do 1} a := ABS(xend - xstart); b := ABS(yend - ystart); d := 2*a + b; For I := 0 to a Do If xstart > xend Then x := xend; y := yend End Else x := xstart; y := ystart End; Plot(x,y); x := x + 1; If d 0 Then y := y + 1; d := d + a + b End Else d := d + a End {For Loop} End; {Bresenham} Optimizacije Brzina se može još više povećati otkrivanjem ciklusa kod varijable odluke. Ti ciklusi odgovaraju ponavljajućem nizu izbora piksela. Ponavljajući niz se snimi i ako se otkrije ciklus, ponavlja se bez ponovnog proračuna. 16 15 14 13 12 11 10 9 6 7 8 9 10 11 12 13 14 15 16 17 di= 2-6 6-2 10 2-6 6-2 10 Algoritam za crtanje kruga Potrebno je samo izračunati vrijednosti na rubu kruga u prvom oktantu. Ostale vrijednosti se mogu dobiti simetrijom. Polazi se od kruga radijusa r s centrom u (0,0). Procedure Circle_Points(x,y :Integer); Plot(x,y); Plot(y,x); Plot(y,-x); Plot(x,-y); Plot(-x,-y); Plot(-y,-x); Plot(-y,x); Plot(-x,y) End; (-a,b) (-a,-b) (-b,a) (-b,-a) (b,a) (b,-a) (a,b) (a,-b) Brzi krugovi Ako se uzme u obzir samo prvi oktant kruga radijusa r sa centrom u koordinatnom početku. Počinje se crtanjem tačke (r,0) a završava kad bude x < y. 2 2 2 x + y - r = 0 Odluka u svakom koraku je da li odabrati piksel direktno iznad posmatranog piksela ili piksel koji je iznad i ulijevo (8-smjerna simetrija). Pretpostavke: P i = (x i, y i ) je piksel koji se posmatra. T i = (x i, y i +1) je piksel direktno iznad njega S i = (x i -1, y i +1) je piksel iznad i ulijevo od njega. x=y 3

Brzi krugovi varijable odluke f(x,y) = x 2 + y 2 -r 2 = 0 f(x i -1/2 + e, y i + 1) = (x i -1/2 + e) 2 + (y i + 1) 2 -r 2 = (x i -1/2) 2 + (y i +1) 2 -r 2 + 2(x i -1/2)e + e 2 = f(x i - 1/2, y i + 1) + 2(x i -1/2)e + e 2 = 0 Let d i = f(x - 1/2, +1) = -2(x -1/2)e - e 2 i y i i (x i -1/2, y + 1) i S = (x i-1,y +1) i e T = (x,y i +1) i P = (x,y i ) i Ako je e < 0 onda je d i > 0 pa se bira tačka S = (x i -1, y i + 1). d i+1 = f(x i - 1-1/2, y i + 1 + 1) = ((x i -1/2)-1) 2 + ((y i + 1) + 1) 2 -r 2 = d i -2(x i -1) + 2(y i + 1) + 1 = d i + 2(y i+1 -x i+1 ) + 1 Brzi krugovi varijable odluke Početna vrijednost za d i je d 0 = f(r - 1/2, 0 + 1) = (r - 1/2) 2 + 1 2 -r 2 = 5/4 - r {1-r se može koristiti ako je r cijeli broj} Kad se izabere tačka S = (x i -1, y i + 1) onda je d i+1 = d i + -2x i+1 + 2y i+1 + 1 Kad se izabere tačka T = ( x i, y i + 1) onda je d i+1 = d i + 2y i+1 + 1 Ako je e 0 onda je d i 0 pa se bira tačka T = (x i, y i + 1). d i+1 = f(x i - 1/2, y i + 1 + 1) = d i + 2y i+1 + 1 Algoritam za brzi krug {Circle} x := r; y := 0; d := 1 - r; Repeat Circle_Points(x,y); y := y + 1; If d < 0 Then d := d + 2*y + 1 Else x := x - 1; d := d + 2*(y-x) + 1 End Until x < y End; {Circle} Brze Elipse Algoritam za krug se može generalizovati da bi radio sa elipsom ali se može koristiti sako 4-smjerna simetrija. (-X/ 2, Y/ 2) (-X,0) (-X/ 2, -Y/ 2) (0,Y) (0,-Y) (X/ 2, Y/ 2) Moraju se izračunati sve tačke u jednom kvadrantu. Kako je Bresenhamov algoritam ograničen samo na jedan oktant, proračun se mora vršiti u dva koraka. Promjena se dešava kad se postigne tačka na elipsi u kojoj tangenta na elipsu u njoj ima nagib od ±1. U prvom kvadrantu, to se dešava kad obje koordinate x i y imaju vrijednost 0.707 svog maksimuma. (X,0) (X/ 2, -Y/ 2) Trougao se može definisati kao presjek tri pozitivne poluravni: Uključeni su samo oni pikseli kod kojih su sve jednačine stranica trougla > 0: - + + - + - 4

Za svaki piksel je potrebno Izračunati jednačine linija u centru piksela "odsjeći" dio površine oko trougla Za svaki piksel je potrebno Izračunati jednačine linija u centru piksela "odsjeći" dio površine oko trougla Problem? Ako je trougao mali, ima previše beskorisnog proračuna Unapređenje: Računati samo piksele trougla koji su unutar gabarita ekrana Kako se odredi taj gabarit? Xmin, Xmax, Ymin, Ymax vrhova trougla Moderne grafičke kartice Trouglovi su obično jako mali Problematično podešavanje Odsijecanje je naporno Moderna rasterizacija Izračunaj jednačine linija Ako su sve jednačine linija>0 //piksel [x,y] unutar trougla Moderna rasterizacija Izračunaj gabarit, odsijeci gabarit do granica ekrana Izračunaj č jednačine linijaij Ako su sve jednačine linija>0 //piksel [x,y] je unutar trougla Odsijecanje gabarita je trivijalno, za razliku od odsijecanja trougla 5

Izračunaj jednačine linija Ako su sve jednačine linija>0 //piksel [x,y] unutar trougla Izračunaj jednačine linija ax+by+c Ako su sve jednačine linija>0 //piksel [x,y] je unutar trougla Ne mora se svaki put ponovo izračunavati jednačina linije ispočetka Podesi jednačinu linije izračunaj a i dx, b i dy za 3 linije Daj početne č vrijednosti jednačina č linija, vrijednosti za vrhove gabarita L i =a i x0+b i y+c i Za svaku liniju skeniranja y unutar gabarita Za 3 linije, ažuriraj Li Za sve x unutar gabarita Inkrementiraj jednačine linija: Li+=adx Ako su sve Li>0 //piksel [x,y] unutar trougla Ušteda: po jedno množenje za svaki piksel Izračunavaju se jednačine linija za veliki broj piksela koji se ne koriste Šta se može uraditi? Hijerarhijska rasterizacija Obično u dva nivoa Tada je samo pitanje određivanja prave granulacije U modernom hardveru Jednačine stranica trougla u homogenim koordinatama [x, y, w] Podjela da bi se dodala granulacija srednjeg nivoa Rano se odbacuju beskorisna područja Koherentan pristup memoriji 6