64
Računalna grafika Računalna grafika Grafički cjevovod Osnovni algoritmi rasterske grafike

računalna grafika

Embed Size (px)

DESCRIPTION

opis

Citation preview

Page 1: računalna grafika

Računalna grafika

Računalna grafika

Grafički cjevovod

Osnovni algoritmi rasterske grafike

Page 2: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 2

Grafički sustav

• Skup izlaznih potprograma koji odgovaraju različitim

primitivnim oblicima, atributima i drugim elementima.

• Potprogrami tvore biblioteku grafičkih potprograma ili

grafički paket

• Mogu se pozivati iz programskih jezika visoke razine (C,

C++, C#, Pascal, LISP,…).

• Potprogrami pokreću prikazne uređaje i na taj način

generiraju slikovni prikaz geometrijskih primitivnih oblika i

atributa specificiranih aplikacijskim programom.

Page 3: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 3

Grafički sustavi rasterske grafike

- GKS, SRGP, PHIGS, OpenGL,...

- Aproksimiraju matematičke (idealne) primitive opisanih

vrhovima u Kartezijevu koordinatnom sustavu, pomoću

skupova piksela odgovarajuće razine svjetloće i/ili boje.

- Pikseli su pohranjeni kao bitovna matrica (bitmap) ili

matrica slikovnih elemenata (pixmap) u memoriju

centralnog procesora ili u međuspremnik okvira (frame

buffer).

Page 4: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 4

Grafički sustavi rasterske grafike

- Grafički sustav kao posrednik između aplikacijskog

programa i sklopovlja za prikaz slike

Page 5: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 5

Grafički sustavi rasterske grafike

- Procedure grafičkog sustava koje se odnose na generiranje

primitiva specificiraju što treba generirati

- Atributske procedure specificiraju kako će se generirati

primitivi

- copyPixel procedura specificira kako će se slike

modificirati

- Pocedure upravljanja canvasom specificiraju gdje će se

generirati slike.

Page 6: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 6

Grafički sustavi rasterske grafike

- Canvasi su bitmape ili pixmape koje se pohranjuju u

prikaznu memoriju.

- Ekran - također canvas koji je poseban samo po tome što

je jedini canvas koji se prikazuje.

- Da bi se slika pohranjena u canvasu prikazala, potrebno je

da aplikacija taj canvas kopira u ekranski canvas.

- U nekom trenutku, samo jedan canvas može biti aktivan.

- To je canvas u koji se crtaju novi primitivi i na kojem se

primjenjuju promjene atributa.

Page 7: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 8

- Grafički sustav koji

pogoni dva tipa

prikaznih sustava:

- a) Prikazno sklopovlje

s prikaznim

procesorom i

međuspremnikom

okvira;

- b) Bez prikaznog

procesora,

međuspremnik okvira

je dio memorije

Page 8: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 9

Prikazni sustavi s međuspremnicima okvira i prikaznim

procesorima

Rasterećenje:

- prikazni procesor obavlja rasterizaciju (scan conversion)

- prikazni procesor izravno obrađuje primitive i atribute koje je

proslijedio grafički sustav.

• Grafički sustav samo vrši konverziju u njegovu internu

reprezentaciju primitiva, atributa i načina zapisa u formatima

u koje prihvaća prikazna periferija koja iscrtava primitive.

Page 9: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 10

Prikazni sustavi bez prikaznog procesora

• grafički sustav sam vrši rasterizaciju u međuspremnik okvira i

neekranski canvas.

• dijelovi memorije pripadaju međuspremniku okvira i

pohranjuju canvase kojima upravlja grafički sustav.

• ostatak memorije koriste ostali programi uključujući i sam

grafički sustav.

Page 10: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 11

Grafički protočni sustav (cjevovod)

• Grafički cjevovod : slijed koraka koji se primjenjuju kako bi se

realna ili virtualna 3D scena i objekti u njoj iscrtali na prikaznom

uređaju.

• Obavljanje grafičkih operacija po fiksnom redoslijedu.

Slika: pojednostavljeni grafički protočni sustav.

Page 11: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 12

Grafički protočni sustav (cjevovod)

• Grafičke aplikacije rade na

apstraktnom nivou i barataju

objektima

• Podatci iz aplikacije predstavljaju

ulaz u grafički cjevovod.

• Podatci o objektima scene su

podatci o osnovnim geometrijskim

elementima i/ili krivuljama od kojih

se sastoje (vrhovi, veze među

vrhovima, položaj, boja, tekstura...).

Primjer koda: zadana 3

vrha trokuta (OpenGL)

Page 12: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 13

Grafički protočni sustav (cjevovod)

• Ulaz u grafički cjevovod čine koordinate vrhova i ostali

parametri koji se postavljaju u grafičkoj aplikaciji.

• Svi ti parametri transformiraju se nizom matrica radi pravilnog

smještanja u scenu, proračuna osvjetljenja i projekcije scene.

• To je “geometrijska faza”

Page 13: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 14

Grafički protočni sustav (cjevovod)

• “Rasterska faza”:

1) Podfaza sakupljanja primitiva

Iz pojedinih vrhova slažu se geometrijski

elementi .

Rezultat: različiti elementi kao što su točke,

linije, trokuti i poligoni

Page 14: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 15

Grafički protočni sustav (cjevovod)

• “Rasterska faza”:

1) Podfaza sakupljanja primitiva

Elementi ili dijelovi elemenata možda će

biti odbačeni ako se ne nalaze u vidljivu

dijelu 3D prostora ili na osnovi toga je li im

lice, tj. ona strana poligona iz koje ide

normala vidljivo ili ne.

Page 15: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 16

Grafički protočni sustav (cjevovod)

“Rasterska faza”:

2) Potfaza: rasterizacija - određivanje prekrivenosti

geometrijskih elemenata slikovnim elementima –

pikselima

Neki poligon - sitan da ne zauzima niti jedan jedini

piksel / velik pa zauzima velik broj piksela (može i

čitav zaslon).

Page 16: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 17

Grafički protočni sustav (cjevovod)

“Rasterska faza”:

2) Potfaza: rasterizacija

Još se ne radi o pikselima jer još nije sigurno da će

se pojedini slikovni element i zapisati u

međuspremnik okvira.

Potencijalni slikovni elementi - fragmenti.

Page 17: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 18

Grafički protočni sustav (cjevovod)

“Rasterska faza”:

3) Potfaza: preslikavanje tekstura na fragmente i

bojenje

Fragmentima se određuje se boja na osnovi

tekstura i različitih matematičkih transformacija.

Page 18: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 19

Grafički protočni sustav (cjevovod)

“Rasterska faza”:

4) Podfaza : rasterske operacije i testovi

razni testovi koje prolazi fragment da bi se utvrdilo da li će se

zapisati u memoriju.

test škara - odbacivanje fragmenata izvan željenog pravokutnog dijela zaslona;

Page 19: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 20

Grafički protočni sustav (cjevovod)

“Rasterska faza”:

4) Podfaza : rasterske operacije i testovi

test dubine - odbacivanje nevidljivih fragmenata;

alfa test – odbacivanje/prihvaćanje fragmenata temeljem alfa komponente

boje...)

različite operacije vezane uz smještanje fragmenata u spremnik okvira (npr.

određivanje i miješanje boje).

Page 20: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 21

Grafički protočni sustav (cjevovod)

“Rasterska faza”:

4) Podfaza : rasterske operacije i testovi

• Ako se fragment zapiše u memoriju, točnije memorijski

spremnik okvira, on će postati slikovni element koji se prikazuje

na zaslonu.

Page 21: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 23

Grafički cjevovod programirljivog sklopovlja

• Grafičko sklopovlje počinje se prvo koristiti za ubrzavanje

dijelova grafičke protočne strukture odnosno grafičkog

cjevovoda.

• Grafički cjevovod u potpunosti prelazi na grafičku procesorsku

jedinicu (GPU)

• Nakon toga - programabilnost

• Programabilnost - od potpuno fiksnog sustava prema potpuno

programabilnom grafičkom procesoru s procesorskim

elementima.

Page 22: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 24

Grafički cjevovod programirljivog sklopovlja

• Osnovna razlika : na postojeće sklopovlje dodaju se dva

procesora (1 za vrhove, 1 za fragmente).

Page 23: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 25

Grafički cjevovod programirljivog sklopovlja

• Procesor vrhova zamjenjuje transformacije vrhova izvedene

sklopovski ostvarenim funkcijama.

• Sve transformacije se moraju izvesti na procesoru vrhova ili

sklopovski ostvarenim funkcijama.

• Analogno vrijedi i za procesor fragmenata.

Page 24: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 26

Grafički cjevovod programirljivog sklopovlja

• Analogno vrijedi i za procesor fragmenata.

• Transformacija vrhova odvojena faza od transformacije

fragmenata - one se mogu odvijati nezavisno (paralelno).

Page 25: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 27

Grafički cjevovod programirljivog sklopovlja

• Broj procesora za fragmente veći je od broja procesora za

vrhove.

Napomena: Dio grafičkih operacija i dalje isključivo pomoću sklopovski

ostvarenih funkcija (dio sakupljanja primitiva i rasterizacije, interpolacije te

dio rasterskih operacija).

Page 26: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 28

GPU cjevovodProgram/

API

GPU Front End

Geometrijska

faza

Sakupljanje

primitiva

Rasterizacija &

Interpolacija

Obrada

fragmenata

Rasterske

operacije

Međuspremnik

okvira

Driver

CPU

GPUBus

Page 27: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 29

GPU cjevovod

• Program

– Napisani program

• API

– Sučelje za OpenGL ili DirectX

Program/

API

Page 28: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 30

GPU cjevovod

• GPU Front End

– Prima naredbe i podatke od drivera

GPU Front End

Page 29: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 31

• Obrada vrhova (geometrijska faza)

– Uobičajeno: transformacije

– Programabilno

Geometrijska

faza

Vertex

Processor

vrhovi

Podaci za interpolaciju

Podaci za rasterizaciju

POSITION

PSIZE

FOG

TEXCOORD[0-7]

COLOR[0-1]shader

POSITION,

NORMAL,

BINORMAL*,

TANGENT*,

TEXCOORD[0-7],

COLOR[0-1],

PSIZE

teksture

Page 30: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 32

GPU cjevovod

• Ispitivanje dubine

– Provjeri međuspremnik okvira: postoje li već manje

dubine (Z-Buffer)

– Ograničena programabilnost

• Miješanje (Blending)

– Koristi alfa kanal za kombiniranje boja koje se već

nalaze u međuspremniku okvira

– Ograničena programabilnost

Rasterske

operacije

Page 31: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 33

PrimjerProgram/

API

GPU Front End

Geometrijska

faza

Sakupljanje

primitiva

Rasterizacija &

Interpolacija

Obrada

fragmenata

Rasterske

operacije

Međuspremnik

okvira*

Driver

Bus

Dio koda

….glBegin(GL_TRIANGLES);glTexCoord2f(1,0); glVertex3f(0,1,0);glTexCoord2f(0,1); glVertex3f(-1,-1,0);glTexCoord2f(0,0); glVertex3f(1,-1,0);

glEnd();

Page 32: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 34

PrimjerProgram/

API

GPU Front End

Geometrijska

faza

Sakupljanje

primitiva

Rasterizacija &

Interpolacija

Obrada

fragmenata

Rasterske

operacije

Međuspremnik

okvira*

Driver

Bus

01001001100….

GP

U

Page 33: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 35

PrimjerProgram/

API

GPU Front End

Geometrijska

faza

Sakupljanje

primitiva

Rasterizacija &

Interpolacija

Obrada

fragmenata

Rasterske

operacije

Međuspremnik

okvira*

Driver

Bus

Volumen pogleda

Page 34: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 36

PrimjerProgram/

API

GPU Front End

Geometrijska

faza

Sakupljanje

primitiva

Rasterizacija &

Interpolacija

Obrada

fragmenata

Rasterske

operacije

Međuspremnik

okvira*

Driver

Bus

Prostor zaslona

Page 35: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 37

PrimjerProgram/

API

GPU Front End

Geometrijska

faza

Sakupljanje

primitiva

Rasterization &

Interpolation

Obrada

fragmenata

Rasterske

operacije

Međuspremnik

okvira*

Driver

Bus

Međuspremnik okvira

Page 36: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 38

PrimjerProgram/

API

GPU Front End

Geometrijska

faza

Sakupljanje

primitiva

Rasterization &

Interpolation

Obrada

fragmenata

Rasterske

operacije

Međuspremnik

okvira*

Driver

Bus

Međuspremnik okvira

Page 37: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 39

Osnovni algoritmi rasterske grafike

Page 38: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 40

Rasterski prikaz

Osnovni problem:

• crtanje kose ravne crte širine jednog piksela na

dvorazinskom rasterskom prikaznom uređaju.

Page 39: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 41

Rasterski prikaz ravnih crta

Algoritmi za rasterski prikaz ravnih crta proračunavaju

koordinate piksela na 2D rasteru koji su najbliži idealnoj,

beskonačno uskoj ravnoj crti.

Poželjne značajke prikazane ravne crte uključuju:

jednolik intenzitet crte čitavom dužinom,

jednolik intenzitet crte neovisno o nagibu,

mogućnost proizvoljnog odabira širine crte,

mogućnost proizvoljnog oblikovanja krajeva,

Page 40: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 42

Rasterski prikaz ravnih crta

Osnovni inkrementalni algoritam

• najjednostavniji pristup

• proračun piksel po piksel na osnovi eksplicitnog oblika

jednadžbe pravca.

Page 41: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 43

Rasterski prikaz ravnih crta

Osnovni inkrementalni algoritam

Algoritam:

1. proračun nagiba pravca (|m| < 1)

2. proračun nove vrijednosti xi povećanjem prethodne

vrijednosti za 1

3. proračun vrijednosti

4. isticanje piksela (xi, Round(yi)) gdje je Round(yi) = Floor

(0.5 + yi).

Page 42: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 44

Rasterski prikaz ravnih crta

Osnovni inkrementalni algoritam

• odabire točke koje su najmanje udaljene od idealne crte

• nije učinkovit jer se u svakoj iteraciji obavljaju operacije

množenja i zbrajanja s realnim ili (racionalnim) brojevima

kao i poziv funkcije Floor.

Page 43: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 45

Rasterski prikaz ravnih crta

Osnovni inkrementalni algoritam

Primjer:

Primjenom osnovnog

inkrementalnog algoritma odredite

niz piksela koji aproksimiraju

ravnu crtu povezuje točke (5,8) i

(10,11)

Page 44: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 46

Rasterski prikaz ravnih crta

Digitalni diferencijalni analizator (DDA)

•izbjegava množenje realnih brojeva

•izraz za proračun vrijednosti koordinate y :

xmyBxxmBmxy iiii Δ)Δ(11

1Δx myy ii 1

•ako je |m| > 1 mijenjaju se uloge x i y koordinata u

algoritmu

Page 45: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 47

Rasterski prikaz ravnih crta

Digitalni diferencijalni analizator (DDA)

Nedostatak:

•zbog nepreciznosti prikaza realnih brojeva u digitalnim

procesorima dodavanje ne sasvim točne vrijednosti unosi

kumulativnu pogrešku i otklon od stvarne vrijednosti

•za kratke crte razina pogreške je prihvatljiva

Page 46: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 48

Rasterski prikaz ravnih crta

Digitalni diferencijalni analizator (DDA)

void Crta( /* Pretpostavka: -1 m1, x0 < x1 */

int x0, int y0, /* Lijeva krajnja točka */

int x1, int y1, /* Desna krajnja točka */

int value) /* Vrijednost koju poprimaju pikseli linije */

{

int x; /* vrijednost x ide od x0 do x1 korak: +1 */

double dy = y1 – y0;

double dx = x1 – x0;

double m = dy / dx;

double y = y0;

for (x = x0; x <= x1; x++) {

WritePixel (x, Round (y), value); /* Postavi piksel u vrijednost - value */

y += m; /* Povećaj y za nagib m */

}

} /* Crta */

Page 47: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 49

Rasterski prikaz ravnih crta

Digitalni diferencijalni analizator (DDA)

x y Round(y)

2.0 2.0 2

3.0 2.8 3

4.0 3.6 4

5.0 4.4 4

6.0 5.2 5

7.0 6.0 6

Rezultat izvršavanja DDA algoritma: Crta(2,2,7,6,120)

Page 48: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 50

Rasterski prikaz ravnih crta

Algoritam središnje točke

o Pretpostavka: nagib pravca između 0 i 1

o Za pravce s nagibima izvan ovog intervala

primjenjuje se tehnika zrcaljenja oko koordinatnih

osi.

o Pravac se preslikava u odgovarajući pravac s

nagibom unutar navedenog intervala

Samo inkrementiranje i cjelobrojno procesiranje

Page 49: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 51

Rasterski prikaz ravnih crta

Algoritam središnje točke

Primjene algoritma središnje točke za crtanje ravne crte

P: posljednja odabrana točka

Izbor između dviju mogućih

točaka:D i GD

S : točka polovišta dužine koja

povezuje točke D i GD

1. S ispod idealnog pravca -

GD bliža idealnom pravcu.

2. S iznad idealnog pravca - D

bliža idealnom pravcu.

Page 50: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 52

Rasterski prikaz ravnih crta

Algoritam središnje točke

• Koristimo implicitni oblik pravca:

• U svakoj iteraciji utvrdimo da li je sred.točka iznad ili ispod

pravca

• Ispitaj vrijednost od:

• di - varijabla odluke u i – tom koraku

iiii

iiii

iiii

yxcbyax

yxcbyax

yxcbyax

,0

,0

,0

Na pravcu

Iznad pravca

Ispod pravca

cybxad iii

2

11

Page 51: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 53

Rasterski prikaz ravnih crta

Algoritam središnje točke

void SredCrta(int x0, int y0, int x1, int y1, int value)

{

int dx = x1– x0;

int dy = y1– y0;

int d = 2 * dy – dx;/* početna vrijednost za d */

int incrD = 2 * dy;/* povećanje za pomak u D */

int incrGD = 2 * (dy – dx);/* povećanje za pomak u GD */

int x = x0;

int y = y0;

Page 52: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 54

Algoritam središnje točke

WritePixel (x, y, value);/* Početni piksel */

while (x < x1) {

if (d <= 0) {/* Izaberi D */

d += incrD;

x++;

} else {/* Izaberi GD */

d += incrGD;

x++;

y++;

}

WritePixel (x, y, value);/* Izabrani piksel najbliži liniji */

} /* while */

}/* SredCrta */

Page 53: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 55

Rasterski prikaz kružnice

Osnovna jednadžba kružnice sa ishodištem koordinatnog

sustava smještenom u njenom središtu je:

x2 + y2 = r2

Eksplicitno izrazimo y:

22 xry

Page 54: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 56

Rasterski prikaz kružnice

1. Nacrtamo četvrtinu

kružnice

2. Povećavanjem

vrijednosti x-a od 0

do r u jediničnim

koracima

izračunavamo +y

rješenje za svaki

korak.

Page 55: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 57

Rasterski prikaz kružnice

Nedostatci:

• računski zahtjevna uzastupna izračunavanja kvadratnog

korijena

• kako vrijednost x-a postaje bliža krajnjoj vrijednosti r,

točke na kružnici će biti sve razmaknutije

Page 56: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 58

Rasterski prikaz kružnice

Drugi pristup:

• crtanjem točaka s koordinatama (rcos, rsin)

povećavanjem vrijednosti kuta od 0° do 90°

• Ovaj način je također spor

Page 57: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 59

Rasterski prikaz kružnice

Osmosmjerna simetrija

Page 58: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 60

Rasterski prikaz kružnice

Osmosmjerna simetrija

void TockeKruznice(int x, int y, int value)

{

WritePixel(x, y, value);

WritePixel(y, x, value);

WritePixel(y, -x, value);

WritePixel(x, -y, value);

WritePixel(-x, -y, value);

WritePixel(-y, -x, value);

WritePixel(-y, x, value);

WritePixel(-x, y, value);

} /* TockeKruznice */

Page 59: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 61

Rasterski prikaz kružnice

Algoritam središnje točke za kružnice

Koristimo simetriju pa razmatramo samo segment od 45°,

npr. drugi oktant

Kao i kod tehnike središnje točke za rasterski prikaz ravne

crte, strategija se zasniva na odabiru koji je od dva piksela

bliži kružnici tako što se procijeni funkcija na sredini između

ta dva piksela.

2/r

Page 60: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 62

Rasterski prikaz kružnice

Algoritam središnje točke za kružnice

2/r

2

2

2

2

11 ryxd iii

–Ako je di < 0 izabiremo piksel A, inače B

Page 61: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 63

Rasterski prikaz kružnice

Algoritam središnje točke za kružnice

2/r

•Ponovo, na osnovu izbora točke A ili B se može koristiti za

izračun nove vrijednosti di+1

•Ako je izabran A onda slijedeća središnja točka ima vrijednost

varijable odluke:

32

2

12

2

1,2 2

2

2

1

ii

iiiii

xd

ryxdyx

Page 62: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 64

Rasterski prikaz kružnice

Algoritam središnje točke za kružnice

2/r

•Inače, ako je bio izabran B varijabla odluke se izračunava iz:

522

2

32

2

3,2 2

2

2

1

iii

iiiii

yxd

ryxdyx

Page 63: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 65

Rasterski prikaz kružnice

Algoritam središnje točke za kružnice

•Ako pretpostavimo da je radijus cjelobrojna vrijednost, prvi

nacrtani piksel će biti (0, r) a početna vrijednost za varijablu

odluke je:

r

rrrdr

4

5

4

11

2

1,1 22

0

Page 64: računalna grafika

Računalna grafika

2014/2015 Predavanje 3 69

Algoritam središnje točke za kružnice

void SredTocKruznica (int radius, int value)

/* pretpostavljamo da je centar kružnice u ishodištu koord.sustava */

{

int x = 0;

int y = radius;

double d = 5.0 / 4.0 – radius;

CirclePoints (x, y, value);

while (y > x) {

if (d < 0)/* izaberi A */

d += 2.0 * x + 3.0;

else {/* izaberi B */

d += 2.0 * (x – y) + 5.0;

y––;

}

x++;

TockeKruznice(x, y, value);

}/* while */

}/* SredTocKruznica */