59
Cuprins Scan-conversion pentru cercuri Scan-conversion pentru cercuri: algoritmul lui Bresenham Rasterizarea elipsei Scan-conversion pentru cercuri ¸ si elipse Marian Ioan MUNTEANU Al.I.Cuza University of Iasi, Romania webpage: http://www.math.uaic.ro/munteanu 22 Octombrie 2012 Marian Ioan MUNTEANU Curs 3: Scan-conversion

Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

  • Upload
    others

  • View
    12

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Scan-conversion pentru cercuri si elipse

Marian Ioan MUNTEANU

Al.I.Cuza University of Iasi, Romaniawebpage: http://www.math.uaic.ro/∼munteanu

22 Octombrie 2012

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 2: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Cuprins

1 Scan-conversion pentru cercuri

2 Scan-conversion pentru cercuri: algoritmul lui Bresenham

3 Rasterizarea elipsei

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 3: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Scan-conversion pentru cercuri

Ecuatia unui cerc cu centrul ın origine si de raza R este

x2 + y2 = R2

Modalitatea cea mai simpla: y = ±√

R2 − x2

si apoi de a calcula y pentru fiecare crestere a lui x.

Pe un sfert de cerc: x creste, din unitate ın unitate, de la 0 la R.√

aceasta aproximare este foarte costisitoare: la fiecare pasavem de facut doua ridicari la patrat si o extragere a radaciniipatrate√nu da nici macar rezultate corecte, anume ca apropierea depunctul de tangenta cu dreapta x = R duce la un efect de”rarire” (vezi figura).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 4: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Scan-conversion pentru cercuri

Ecuatia unui cerc cu centrul ın origine si de raza R este

x2 + y2 = R2

Modalitatea cea mai simpla: y = ±√

R2 − x2

si apoi de a calcula y pentru fiecare crestere a lui x.

Pe un sfert de cerc: x creste, din unitate ın unitate, de la 0 la R.√

aceasta aproximare este foarte costisitoare: la fiecare pasavem de facut doua ridicari la patrat si o extragere a radaciniipatrate√nu da nici macar rezultate corecte, anume ca apropierea depunctul de tangenta cu dreapta x = R duce la un efect de”rarire” (vezi figura).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 5: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Scan-conversion pentru cercuri

Ecuatia unui cerc cu centrul ın origine si de raza R este

x2 + y2 = R2

Modalitatea cea mai simpla: y = ±√

R2 − x2

si apoi de a calcula y pentru fiecare crestere a lui x.

Pe un sfert de cerc: x creste, din unitate ın unitate, de la 0 la R.√

aceasta aproximare este foarte costisitoare: la fiecare pasavem de facut doua ridicari la patrat si o extragere a radaciniipatrate√nu da nici macar rezultate corecte, anume ca apropierea depunctul de tangenta cu dreapta x = R duce la un efect de”rarire” (vezi figura).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 6: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Scan-conversion pentru cercuri

Ecuatia unui cerc cu centrul ın origine si de raza R este

x2 + y2 = R2

Modalitatea cea mai simpla: y = ±√

R2 − x2

si apoi de a calcula y pentru fiecare crestere a lui x.

Pe un sfert de cerc: x creste, din unitate ın unitate, de la 0 la R.√

aceasta aproximare este foarte costisitoare: la fiecare pasavem de facut doua ridicari la patrat si o extragere a radaciniipatrate√nu da nici macar rezultate corecte, anume ca apropierea depunctul de tangenta cu dreapta x = R duce la un efect de”rarire” (vezi figura).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 7: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Scan-conversion pentru cercuri

Ecuatia unui cerc cu centrul ın origine si de raza R este

x2 + y2 = R2

Modalitatea cea mai simpla: y = ±√

R2 − x2

si apoi de a calcula y pentru fiecare crestere a lui x.

Pe un sfert de cerc: x creste, din unitate ın unitate, de la 0 la R.√

aceasta aproximare este foarte costisitoare: la fiecare pasavem de facut doua ridicari la patrat si o extragere a radaciniipatrate√nu da nici macar rezultate corecte, anume ca apropierea depunctul de tangenta cu dreapta x = R duce la un efect de”rarire” (vezi figura).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 8: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Scan-conversion pentru cercuri

Ecuatia unui cerc cu centrul ın origine si de raza R este

x2 + y2 = R2

Modalitatea cea mai simpla: y = ±√

R2 − x2

si apoi de a calcula y pentru fiecare crestere a lui x.

Pe un sfert de cerc: x creste, din unitate ın unitate, de la 0 la R.√

aceasta aproximare este foarte costisitoare: la fiecare pasavem de facut doua ridicari la patrat si o extragere a radaciniipatrate√nu da nici macar rezultate corecte, anume ca apropierea depunctul de tangenta cu dreapta x = R duce la un efect de”rarire” (vezi figura).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 9: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Rarirea punctelor

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 10: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Scan-conversion pentru cercuri

O observatie banala, dar extrem de utila: rasterizarea unui cercpoate fi facuta pe optimi de cerc

(x , y) : (−x , y), (x ,−y), (−x ,−y), (y , x), (−y , x), (y ,−x), (−y ,−x).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 11: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Scan-conversion pentru cercuri

O observatie banala, dar extrem de utila: rasterizarea unui cercpoate fi facuta pe optimi de cerc

(x , y) : (−x , y), (x ,−y), (−x ,−y), (y , x), (−y , x), (y ,−x), (−y ,−x).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 12: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Scan-conversion pentru cercuri

O observatie banala, dar extrem de utila: rasterizarea unui cercpoate fi facuta pe optimi de cerc

(x , y) : (−x , y), (x ,−y), (−x ,−y), (y , x), (−y , x), (y ,−x), (−y ,−x).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 13: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul lui Bresenham pentru cercuri

La fel ca si pentru drepte, strategia este aceea de a alege dintre doipixeli pe cel care reprezinta cel mai bine punctul de pe cerc cuajutorul calculului unei functii ın mijlocul segmentului care unestecei doi pixeli.

Functia care defineste cercul este F (x , y) = x2 + y2 − R2.

Aceasta ia valoarea 0 pe cerc, ia valori negative ın interior si valoripozitive ın exteriorul sau.

Facem calculul pentru al doilea octant (x de la 0 la R√2

si y>0).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 14: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul lui Bresenham pentru cercuri

La fel ca si pentru drepte, strategia este aceea de a alege dintre doipixeli pe cel care reprezinta cel mai bine punctul de pe cerc cuajutorul calculului unei functii ın mijlocul segmentului care unestecei doi pixeli.

Functia care defineste cercul este F (x , y) = x2 + y2 − R2.

Aceasta ia valoarea 0 pe cerc, ia valori negative ın interior si valoripozitive ın exteriorul sau.

Facem calculul pentru al doilea octant (x de la 0 la R√2

si y>0).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 15: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul lui Bresenham pentru cercuri

La fel ca si pentru drepte, strategia este aceea de a alege dintre doipixeli pe cel care reprezinta cel mai bine punctul de pe cerc cuajutorul calculului unei functii ın mijlocul segmentului care unestecei doi pixeli.

Functia care defineste cercul este F (x , y) = x2 + y2 − R2.

Aceasta ia valoarea 0 pe cerc, ia valori negative ın interior si valoripozitive ın exteriorul sau.

Facem calculul pentru al doilea octant (x de la 0 la R√2

si y>0).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 16: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul lui Bresenham pentru cercuri

Presupunem ca am ales pixelul P de coordonate (xp,yp).Urmatorul pixel care va fi ales: E sau SE .

Astfel, vom alege SE daca M este ın afara cercului i.e. F (M) > 0si E daca M este ın interiorul cercului i.e. F (M) < 0.

La fel ca si ın cazul dreptei definim d , variabila de decizie, prin:

d = F (M) = F (xp + 1, yp − 12) = (xp + 1)2 + (yp − 1

2)2 − R2=

=x2p + y2

p + 2xp − yp − R2 + 54 .

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 17: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul lui Bresenham pentru cercuri

Presupunem ca am ales pixelul P de coordonate (xp,yp).Urmatorul pixel care va fi ales: E sau SE .

Astfel, vom alege SE daca M este ın afara cercului i.e. F (M) > 0si E daca M este ın interiorul cercului i.e. F (M) < 0.

La fel ca si ın cazul dreptei definim d , variabila de decizie, prin:

d = F (M) = F (xp + 1, yp − 12) = (xp + 1)2 + (yp − 1

2)2 − R2=

=x2p + y2

p + 2xp − yp − R2 + 54 .

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 18: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul lui Bresenham pentru cercuri

Presupunem ca am ales pixelul P de coordonate (xp,yp).Urmatorul pixel care va fi ales: E sau SE .

Astfel, vom alege SE daca M este ın afara cercului i.e. F (M) > 0si E daca M este ın interiorul cercului i.e. F (M) < 0.

La fel ca si ın cazul dreptei definim d , variabila de decizie, prin:

d = F (M) = F (xp + 1, yp − 12) = (xp + 1)2 + (yp − 1

2)2 − R2=

=x2p + y2

p + 2xp − yp − R2 + 54 .

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 19: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul lui Bresenham pentru cercuri

- daca d > 0 alegem SE, iar valoarea urmatoare a lui d va fi

dnew = F (xp + 2, yp − 32) = (xp + 2)2 + (yp − 3

2)2 − R2 ==d+ 2xp − 2yp + 5︸ ︷︷ ︸

deltaSE

−→ dnew = d + deltaSE (d+=deltaSE).

- daca d ≤ 0 alegem E si astfel valoarea urmatoare a lui d va fi

dnew =F (xp + 2, yp − 12) = (xp + 2)2 + (yp − 1

2)2 − R2==d+ 2xp + 3︸ ︷︷ ︸

deltaE

−→ dnew = d + deltaE (d+=deltaE)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 20: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul lui Bresenham pentru cercuri

- daca d > 0 alegem SE, iar valoarea urmatoare a lui d va fi

dnew = F (xp + 2, yp − 32) = (xp + 2)2 + (yp − 3

2)2 − R2 ==d+ 2xp − 2yp + 5︸ ︷︷ ︸

deltaSE

−→ dnew = d + deltaSE (d+=deltaSE).

- daca d ≤ 0 alegem E si astfel valoarea urmatoare a lui d va fi

dnew =F (xp + 2, yp − 12) = (xp + 2)2 + (yp − 1

2)2 − R2==d+ 2xp + 3︸ ︷︷ ︸

deltaE

−→ dnew = d + deltaE (d+=deltaE)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 21: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul lui Bresenham pentru cercuri

valorile diferentelor deltaE si deltaSE care apar nu mai suntconstante ci functii de pixelul precedent al rasterizarii !!!!

Valoarea de start a lui d , data de primul mijloc, este:

dstart = F

(1,R − 1

2

)= 12 +

(R − 1

2

)2

− R2 =5

4− R.

Inlocuind d cu h + 14 se obtine hstart = 1− R,

d ≤ (sau > 0) devine h ≤ (sau >) 14 ·.

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 22: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul lui Bresenham pentru cercuri

valorile diferentelor deltaE si deltaSE care apar nu mai suntconstante ci functii de pixelul precedent al rasterizarii !!!!

Valoarea de start a lui d , data de primul mijloc, este:

dstart = F

(1,R − 1

2

)= 12 +

(R − 1

2

)2

− R2 =5

4− R.

Inlocuind d cu h + 14 se obtine hstart = 1− R,

d ≤ (sau > 0) devine h ≤ (sau >) 14 ·.

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 23: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul lui Bresenham pentru cercuri

valorile diferentelor deltaE si deltaSE care apar nu mai suntconstante ci functii de pixelul precedent al rasterizarii !!!!

Valoarea de start a lui d , data de primul mijloc, este:

dstart = F

(1,R − 1

2

)= 12 +

(R − 1

2

)2

− R2 =5

4− R.

Inlocuind d cu h + 14 se obtine hstart = 1− R,

d ≤ (sau > 0) devine h ≤ (sau >) 14 ·.

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 24: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

deltaE si deltaSE sunt functii polinomiale de gradul I,pe care le vom calcula printr-o metoda incrementala.

Metoda se numeste metoda diferentelor partiale de ordinul al II-lea.Presupunem ca se alege pixelul E ;

atunci punctul P se muta ın E (xP + 1, yP).

Functia deltaE care avea valoarea deltaE = 2xp + 3 (ın P)are acum valoarea deltaEnew = 2(xp + 1) + 3 = 2xp + 5 (ın E )

Astfel, deltaEnew = deltaE + 2 (deltaE += 2).

In mod similar deltaSE = 2xp − 2yp + 5 (ın P)

iar deltaSEnew = 2(xp + 1− 2yp + 5) = 2xp − 2yp + 7 (ın E ).

Astfel, deltaSEnew = deltaSE + 2 (deltaSE += 2).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 25: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

deltaE si deltaSE sunt functii polinomiale de gradul I,pe care le vom calcula printr-o metoda incrementala.

Metoda se numeste metoda diferentelor partiale de ordinul al II-lea.Presupunem ca se alege pixelul E ;

atunci punctul P se muta ın E (xP + 1, yP).

Functia deltaE care avea valoarea deltaE = 2xp + 3 (ın P)are acum valoarea deltaEnew = 2(xp + 1) + 3 = 2xp + 5 (ın E )

Astfel, deltaEnew = deltaE + 2 (deltaE += 2).

In mod similar deltaSE = 2xp − 2yp + 5 (ın P)

iar deltaSEnew = 2(xp + 1− 2yp + 5) = 2xp − 2yp + 7 (ın E ).

Astfel, deltaSEnew = deltaSE + 2 (deltaSE += 2).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 26: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

deltaE si deltaSE sunt functii polinomiale de gradul I,pe care le vom calcula printr-o metoda incrementala.

Metoda se numeste metoda diferentelor partiale de ordinul al II-lea.Presupunem ca se alege pixelul E ;

atunci punctul P se muta ın E (xP + 1, yP).

Functia deltaE care avea valoarea deltaE = 2xp + 3 (ın P)are acum valoarea deltaEnew = 2(xp + 1) + 3 = 2xp + 5 (ın E )

Astfel, deltaEnew = deltaE + 2 (deltaE += 2).

In mod similar deltaSE = 2xp − 2yp + 5 (ın P)

iar deltaSEnew = 2(xp + 1− 2yp + 5) = 2xp − 2yp + 7 (ın E ).

Astfel, deltaSEnew = deltaSE + 2 (deltaSE += 2).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 27: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

deltaE si deltaSE sunt functii polinomiale de gradul I,pe care le vom calcula printr-o metoda incrementala.

Metoda se numeste metoda diferentelor partiale de ordinul al II-lea.Presupunem ca se alege pixelul E ;

atunci punctul P se muta ın E (xP + 1, yP).

Functia deltaE care avea valoarea deltaE = 2xp + 3 (ın P)are acum valoarea deltaEnew = 2(xp + 1) + 3 = 2xp + 5 (ın E )

Astfel, deltaEnew = deltaE + 2 (deltaE += 2).

In mod similar deltaSE = 2xp − 2yp + 5 (ın P)

iar deltaSEnew = 2(xp + 1− 2yp + 5) = 2xp − 2yp + 7 (ın E ).

Astfel, deltaSEnew = deltaSE + 2 (deltaSE += 2).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 28: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

deltaE si deltaSE sunt functii polinomiale de gradul I,pe care le vom calcula printr-o metoda incrementala.

Metoda se numeste metoda diferentelor partiale de ordinul al II-lea.Presupunem ca se alege pixelul E ;

atunci punctul P se muta ın E (xP + 1, yP).

Functia deltaE care avea valoarea deltaE = 2xp + 3 (ın P)are acum valoarea deltaEnew = 2(xp + 1) + 3 = 2xp + 5 (ın E )

Astfel, deltaEnew = deltaE + 2 (deltaE += 2).

In mod similar deltaSE = 2xp − 2yp + 5 (ın P)

iar deltaSEnew = 2(xp + 1− 2yp + 5) = 2xp − 2yp + 7 (ın E ).

Astfel, deltaSEnew = deltaSE + 2 (deltaSE += 2).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 29: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

deltaE si deltaSE sunt functii polinomiale de gradul I,pe care le vom calcula printr-o metoda incrementala.

Metoda se numeste metoda diferentelor partiale de ordinul al II-lea.Presupunem ca se alege pixelul E ;

atunci punctul P se muta ın E (xP + 1, yP).

Functia deltaE care avea valoarea deltaE = 2xp + 3 (ın P)are acum valoarea deltaEnew = 2(xp + 1) + 3 = 2xp + 5 (ın E )

Astfel, deltaEnew = deltaE + 2 (deltaE += 2).

In mod similar deltaSE = 2xp − 2yp + 5 (ın P)

iar deltaSEnew = 2(xp + 1− 2yp + 5) = 2xp − 2yp + 7 (ın E ).

Astfel, deltaSEnew = deltaSE + 2 (deltaSE += 2).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 30: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

deltaE si deltaSE sunt functii polinomiale de gradul I,pe care le vom calcula printr-o metoda incrementala.

Metoda se numeste metoda diferentelor partiale de ordinul al II-lea.Presupunem ca se alege pixelul E ;

atunci punctul P se muta ın E (xP + 1, yP).

Functia deltaE care avea valoarea deltaE = 2xp + 3 (ın P)are acum valoarea deltaEnew = 2(xp + 1) + 3 = 2xp + 5 (ın E )

Astfel, deltaEnew = deltaE + 2 (deltaE += 2).

In mod similar deltaSE = 2xp − 2yp + 5 (ın P)

iar deltaSEnew = 2(xp + 1− 2yp + 5) = 2xp − 2yp + 7 (ın E ).

Astfel, deltaSEnew = deltaSE + 2 (deltaSE += 2).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 31: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

deltaE si deltaSE sunt functii polinomiale de gradul I,pe care le vom calcula printr-o metoda incrementala.

Metoda se numeste metoda diferentelor partiale de ordinul al II-lea.Presupunem ca se alege pixelul E ;

atunci punctul P se muta ın E (xP + 1, yP).

Functia deltaE care avea valoarea deltaE = 2xp + 3 (ın P)are acum valoarea deltaEnew = 2(xp + 1) + 3 = 2xp + 5 (ın E )

Astfel, deltaEnew = deltaE + 2 (deltaE += 2).

In mod similar deltaSE = 2xp − 2yp + 5 (ın P)

iar deltaSEnew = 2(xp + 1− 2yp + 5) = 2xp − 2yp + 7 (ın E ).

Astfel, deltaSEnew = deltaSE + 2 (deltaSE += 2).

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 32: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

Daca ınsa se alege pixelul SEpunctul P se muta ın SE (xp + 1, yp − 1)

deltaEnew = 2xp + 5 (ın SE )

si deci deltaEnew = deltaE + 2 (deltaE += 2)

deltaSEnew = 2xp − 2yp + 9 (ın SE )

si deci deltaSEnew = deltaSE + 4 (deltaSE += 4)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 33: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

Daca ınsa se alege pixelul SEpunctul P se muta ın SE (xp + 1, yp − 1)

deltaEnew = 2xp + 5 (ın SE )

si deci deltaEnew = deltaE + 2 (deltaE += 2)

deltaSEnew = 2xp − 2yp + 9 (ın SE )

si deci deltaSEnew = deltaSE + 4 (deltaSE += 4)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 34: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

Daca ınsa se alege pixelul SEpunctul P se muta ın SE (xp + 1, yp − 1)

deltaEnew = 2xp + 5 (ın SE )

si deci deltaEnew = deltaE + 2 (deltaE += 2)

deltaSEnew = 2xp − 2yp + 9 (ın SE )

si deci deltaSEnew = deltaSE + 4 (deltaSE += 4)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 35: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

Daca ınsa se alege pixelul SEpunctul P se muta ın SE (xp + 1, yp − 1)

deltaEnew = 2xp + 5 (ın SE )

si deci deltaEnew = deltaE + 2 (deltaE += 2)

deltaSEnew = 2xp − 2yp + 9 (ın SE )

si deci deltaSEnew = deltaSE + 4 (deltaSE += 4)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 36: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

Daca ınsa se alege pixelul SEpunctul P se muta ın SE (xp + 1, yp − 1)

deltaEnew = 2xp + 5 (ın SE )

si deci deltaEnew = deltaE + 2 (deltaE += 2)

deltaSEnew = 2xp − 2yp + 9 (ın SE )

si deci deltaSEnew = deltaSE + 4 (deltaSE += 4)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 37: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Calculul diferentelor

Daca ınsa se alege pixelul SEpunctul P se muta ın SE (xp + 1, yp − 1)

deltaEnew = 2xp + 5 (ın SE )

si deci deltaEnew = deltaE + 2 (deltaE += 2)

deltaSEnew = 2xp − 2yp + 9 (ın SE )

si deci deltaSEnew = deltaSE + 4 (deltaSE += 4)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 38: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul C

x=0;y=raza;d=1-raza;deltaE=3;deltaSE=5-2*raza;putpixel(x,y,RED);

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 39: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul C

do {if (d < 0) { /* alegem E */

d+=deltaE;deltaE+=2;deltaSE+=2;x++;} else { /* alegem SE */

d+=deltaSE;deltaE+=2;deltaSE+=4;x++;y−−;}

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 40: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul C

/* se vor pune in evidenta cele 8 arce de cerc folosindu-se culoridiferite */

putpixel(x, y, GREEN);putpixel(-x, -y, RED);putpixel(x, -y, MAGENTA);putpixel(-x, y, BLUE);putpixel(y, x, LIGHTRED);putpixel(-y, -x, LIGHTGREEN);putpixel(y, -x, LIGHTBLUE);putpixel(-y, x, LIGHTMAGENTA);}

while (y > x);

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 41: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Consideram elipsa x2

a2+ y2

b2= 1.

Se divide primul cadran ın doua regiuni ın urma determinariipunctului ın care tangenta la elipsa are panta -1.

Consideram F (x , y) = b2 · x2 + a2 · y2 − a2 · b2.

In punctul A(x0, y0) ın care componentele normalei sunt egale

avem m = f ′(x0) = −1, unde f (x) = b ·√

1− x2

a2este ecuatia

explicita a elipsei (ın primul cadran) iar x0 si y0 verificax20a2

+y20b2

= 1.

Rezulta a2 · y0 = b2 · x0.

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 42: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Consideram elipsa x2

a2+ y2

b2= 1.

Se divide primul cadran ın doua regiuni ın urma determinariipunctului ın care tangenta la elipsa are panta -1.

Consideram F (x , y) = b2 · x2 + a2 · y2 − a2 · b2.

In punctul A(x0, y0) ın care componentele normalei sunt egale

avem m = f ′(x0) = −1, unde f (x) = b ·√

1− x2

a2este ecuatia

explicita a elipsei (ın primul cadran) iar x0 si y0 verificax20a2

+y20b2

= 1.

Rezulta a2 · y0 = b2 · x0.

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 43: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Consideram elipsa x2

a2+ y2

b2= 1.

Se divide primul cadran ın doua regiuni ın urma determinariipunctului ın care tangenta la elipsa are panta -1.

Consideram F (x , y) = b2 · x2 + a2 · y2 − a2 · b2.

In punctul A(x0, y0) ın care componentele normalei sunt egale

avem m = f ′(x0) = −1, unde f (x) = b ·√

1− x2

a2este ecuatia

explicita a elipsei (ın primul cadran) iar x0 si y0 verificax20a2

+y20b2

= 1.

Rezulta a2 · y0 = b2 · x0.

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 44: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Consideram elipsa x2

a2+ y2

b2= 1.

Se divide primul cadran ın doua regiuni ın urma determinariipunctului ın care tangenta la elipsa are panta -1.

Consideram F (x , y) = b2 · x2 + a2 · y2 − a2 · b2.

In punctul A(x0, y0) ın care componentele normalei sunt egale

avem m = f ′(x0) = −1, unde f (x) = b ·√

1− x2

a2este ecuatia

explicita a elipsei (ın primul cadran) iar x0 si y0 verificax20a2

+y20b2

= 1.

Rezulta a2 · y0 = b2 · x0.

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 45: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Consideram elipsa x2

a2+ y2

b2= 1.

Se divide primul cadran ın doua regiuni ın urma determinariipunctului ın care tangenta la elipsa are panta -1.

Consideram F (x , y) = b2 · x2 + a2 · y2 − a2 · b2.

In punctul A(x0, y0) ın care componentele normalei sunt egale

avem m = f ′(x0) = −1, unde f (x) = b ·√

1− x2

a2este ecuatia

explicita a elipsei (ın primul cadran) iar x0 si y0 verificax20a2

+y20b2

= 1.

Rezulta a2 · y0 = b2 · x0.

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 46: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Consideram elipsa x2

a2+ y2

b2= 1.

Se divide primul cadran ın doua regiuni ın urma determinariipunctului ın care tangenta la elipsa are panta -1.

Consideram F (x , y) = b2 · x2 + a2 · y2 − a2 · b2.

In punctul A(x0, y0) ın care componentele normalei sunt egale

avem m = f ′(x0) = −1, unde f (x) = b ·√

1− x2

a2este ecuatia

explicita a elipsei (ın primul cadran) iar x0 si y0 verificax20a2

+y20b2

= 1.

Rezulta a2 · y0 = b2 · x0.

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 47: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa studiem regiunea I: b2 · x < a2 · yVariabila de decizie va fid = F (xP +1, yP− 1

2) = b2 ·x2p +a2 ·y2

p−a2 ·b2+2b2 ·xp−a2 ·yp+ a2

4

• daca d = F (M) < 0, M este ın interior, atunci alegem Ednew = F (xP + 2, yP − 1

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − a2 · yP + 4b2 + a2

4 dnew = d+ 2b2 · xP + 3b2︸ ︷︷ ︸

deltaE

(d += deltaE)

• daca d = F (M) > 0, M este ın exterior, alegem SEdnew = F (xP + 2, yP − 3

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − 3a2 · yP + 4b2 + 9a2

4 · dnew = d+ 2b2 · xP − 2a2 · yP + 3b2 + 2a2︸ ︷︷ ︸

deltaSE

(d += deltaSE)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 48: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa studiem regiunea I: b2 · x < a2 · yVariabila de decizie va fid = F (xP +1, yP− 1

2) = b2 ·x2p +a2 ·y2

p−a2 ·b2+2b2 ·xp−a2 ·yp+ a2

4

• daca d = F (M) < 0, M este ın interior, atunci alegem Ednew = F (xP + 2, yP − 1

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − a2 · yP + 4b2 + a2

4 dnew = d+ 2b2 · xP + 3b2︸ ︷︷ ︸

deltaE

(d += deltaE)

• daca d = F (M) > 0, M este ın exterior, alegem SEdnew = F (xP + 2, yP − 3

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − 3a2 · yP + 4b2 + 9a2

4 · dnew = d+ 2b2 · xP − 2a2 · yP + 3b2 + 2a2︸ ︷︷ ︸

deltaSE

(d += deltaSE)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 49: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa studiem regiunea I: b2 · x < a2 · yVariabila de decizie va fid = F (xP +1, yP− 1

2) = b2 ·x2p +a2 ·y2

p−a2 ·b2+2b2 ·xp−a2 ·yp+ a2

4

• daca d = F (M) < 0, M este ın interior, atunci alegem Ednew = F (xP + 2, yP − 1

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − a2 · yP + 4b2 + a2

4 dnew = d+ 2b2 · xP + 3b2︸ ︷︷ ︸

deltaE

(d += deltaE)

• daca d = F (M) > 0, M este ın exterior, alegem SEdnew = F (xP + 2, yP − 3

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − 3a2 · yP + 4b2 + 9a2

4 · dnew = d+ 2b2 · xP − 2a2 · yP + 3b2 + 2a2︸ ︷︷ ︸

deltaSE

(d += deltaSE)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 50: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa studiem regiunea I: b2 · x < a2 · yVariabila de decizie va fid = F (xP +1, yP− 1

2) = b2 ·x2p +a2 ·y2

p−a2 ·b2+2b2 ·xp−a2 ·yp+ a2

4

• daca d = F (M) < 0, M este ın interior, atunci alegem Ednew = F (xP + 2, yP − 1

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − a2 · yP + 4b2 + a2

4 dnew = d+ 2b2 · xP + 3b2︸ ︷︷ ︸

deltaE

(d += deltaE)

• daca d = F (M) > 0, M este ın exterior, alegem SEdnew = F (xP + 2, yP − 3

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − 3a2 · yP + 4b2 + 9a2

4 · dnew = d+ 2b2 · xP − 2a2 · yP + 3b2 + 2a2︸ ︷︷ ︸

deltaSE

(d += deltaSE)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 51: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa studiem regiunea I: b2 · x < a2 · yVariabila de decizie va fid = F (xP +1, yP− 1

2) = b2 ·x2p +a2 ·y2

p−a2 ·b2+2b2 ·xp−a2 ·yp+ a2

4

• daca d = F (M) < 0, M este ın interior, atunci alegem Ednew = F (xP + 2, yP − 1

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − a2 · yP + 4b2 + a2

4 dnew = d+ 2b2 · xP + 3b2︸ ︷︷ ︸

deltaE

(d += deltaE)

• daca d = F (M) > 0, M este ın exterior, alegem SEdnew = F (xP + 2, yP − 3

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − 3a2 · yP + 4b2 + 9a2

4 · dnew = d+ 2b2 · xP − 2a2 · yP + 3b2 + 2a2︸ ︷︷ ︸

deltaSE

(d += deltaSE)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 52: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa studiem regiunea I: b2 · x < a2 · yVariabila de decizie va fid = F (xP +1, yP− 1

2) = b2 ·x2p +a2 ·y2

p−a2 ·b2+2b2 ·xp−a2 ·yp+ a2

4

• daca d = F (M) < 0, M este ın interior, atunci alegem Ednew = F (xP + 2, yP − 1

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − a2 · yP + 4b2 + a2

4 dnew = d+ 2b2 · xP + 3b2︸ ︷︷ ︸

deltaE

(d += deltaE)

• daca d = F (M) > 0, M este ın exterior, alegem SEdnew = F (xP + 2, yP − 3

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − 3a2 · yP + 4b2 + 9a2

4 · dnew = d+ 2b2 · xP − 2a2 · yP + 3b2 + 2a2︸ ︷︷ ︸

deltaSE

(d += deltaSE)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 53: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa studiem regiunea I: b2 · x < a2 · yVariabila de decizie va fid = F (xP +1, yP− 1

2) = b2 ·x2p +a2 ·y2

p−a2 ·b2+2b2 ·xp−a2 ·yp+ a2

4

• daca d = F (M) < 0, M este ın interior, atunci alegem Ednew = F (xP + 2, yP − 1

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − a2 · yP + 4b2 + a2

4 dnew = d+ 2b2 · xP + 3b2︸ ︷︷ ︸

deltaE

(d += deltaE)

• daca d = F (M) > 0, M este ın exterior, alegem SEdnew = F (xP + 2, yP − 3

2) =

b2 · x2P + a2 · y2

P − a2 · b2 + 4b2 · xP − 3a2 · yP + 4b2 + 9a2

4 · dnew = d+ 2b2 · xP − 2a2 · yP + 3b2 + 2a2︸ ︷︷ ︸

deltaSE

(d += deltaSE)

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 54: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa calculam acum prima valoare a lui d .

dinitial = F (1, b − 12) = b2 + a2 · (b − 1

2)2 − a2b2 =

= b2 + a2b2 − a2b + a2

4 − a2b2 = b2 − a2b + a2

4 ·Scriem acum cresterile pentru deltaE si deltaSE :E: (xP + 1, yP)

deltaEnew = deltaE + 2b2 (deltaE += 2b2)deltaSEnew = deltaSE + 2b2 (deltaSE += 2b2)

SE: (xP + 1, yP − 1)deltaEnew = deltaE + 2b2 (deltaE += 2b2)deltaSEnew = deltaSE + 2b2 + 2a2 (deltaSE +=

2b2 + 2a2)

Valorile initiale sunt: deltaEinitial = 3b2

deltaSEinitial = −2a2 · b + 3b2 + 2a2

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 55: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa calculam acum prima valoare a lui d .

dinitial = F (1, b − 12) = b2 + a2 · (b − 1

2)2 − a2b2 =

= b2 + a2b2 − a2b + a2

4 − a2b2 = b2 − a2b + a2

4 ·Scriem acum cresterile pentru deltaE si deltaSE :E: (xP + 1, yP)

deltaEnew = deltaE + 2b2 (deltaE += 2b2)deltaSEnew = deltaSE + 2b2 (deltaSE += 2b2)

SE: (xP + 1, yP − 1)deltaEnew = deltaE + 2b2 (deltaE += 2b2)deltaSEnew = deltaSE + 2b2 + 2a2 (deltaSE +=

2b2 + 2a2)

Valorile initiale sunt: deltaEinitial = 3b2

deltaSEinitial = −2a2 · b + 3b2 + 2a2

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 56: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa calculam acum prima valoare a lui d .

dinitial = F (1, b − 12) = b2 + a2 · (b − 1

2)2 − a2b2 =

= b2 + a2b2 − a2b + a2

4 − a2b2 = b2 − a2b + a2

4 ·Scriem acum cresterile pentru deltaE si deltaSE :E: (xP + 1, yP)

deltaEnew = deltaE + 2b2 (deltaE += 2b2)deltaSEnew = deltaSE + 2b2 (deltaSE += 2b2)

SE: (xP + 1, yP − 1)deltaEnew = deltaE + 2b2 (deltaE += 2b2)deltaSEnew = deltaSE + 2b2 + 2a2 (deltaSE +=

2b2 + 2a2)

Valorile initiale sunt: deltaEinitial = 3b2

deltaSEinitial = −2a2 · b + 3b2 + 2a2

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 57: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa calculam acum prima valoare a lui d .

dinitial = F (1, b − 12) = b2 + a2 · (b − 1

2)2 − a2b2 =

= b2 + a2b2 − a2b + a2

4 − a2b2 = b2 − a2b + a2

4 ·Scriem acum cresterile pentru deltaE si deltaSE :E: (xP + 1, yP)

deltaEnew = deltaE + 2b2 (deltaE += 2b2)deltaSEnew = deltaSE + 2b2 (deltaSE += 2b2)

SE: (xP + 1, yP − 1)deltaEnew = deltaE + 2b2 (deltaE += 2b2)deltaSEnew = deltaSE + 2b2 + 2a2 (deltaSE +=

2b2 + 2a2)

Valorile initiale sunt: deltaEinitial = 3b2

deltaSEinitial = −2a2 · b + 3b2 + 2a2

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 58: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa calculam acum prima valoare a lui d .

dinitial = F (1, b − 12) = b2 + a2 · (b − 1

2)2 − a2b2 =

= b2 + a2b2 − a2b + a2

4 − a2b2 = b2 − a2b + a2

4 ·Scriem acum cresterile pentru deltaE si deltaSE :E: (xP + 1, yP)

deltaEnew = deltaE + 2b2 (deltaE += 2b2)deltaSEnew = deltaSE + 2b2 (deltaSE += 2b2)

SE: (xP + 1, yP − 1)deltaEnew = deltaE + 2b2 (deltaE += 2b2)deltaSEnew = deltaSE + 2b2 + 2a2 (deltaSE +=

2b2 + 2a2)

Valorile initiale sunt: deltaEinitial = 3b2

deltaSEinitial = −2a2 · b + 3b2 + 2a2

Marian Ioan MUNTEANU Curs 3: Scan-conversion

Page 59: Scan-conversion pentru cercuri si elipsemunteanu/cursuri/Curs_03_an3.pdf · 2012. 10. 21. · Marian Ioan MUNTEANU Curs 3: Scan-conversion. Cuprins Scan-conversion pentru cercuri

CuprinsScan-conversion pentru cercuri

Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei

Algoritmul da Silva

Sa se studieze regiunea a-II-a:

b2 · x ≥ a2 · y

Marian Ioan MUNTEANU Curs 3: Scan-conversion