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
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
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
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
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
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
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
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
CuprinsScan-conversion pentru cercuri
Scan-conversion pentru cercuri: algoritmul lui BresenhamRasterizarea elipsei
Rarirea punctelor
Marian Ioan MUNTEANU Curs 3: Scan-conversion
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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