



Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
The outline of lectures on algorithms for rasterizing graphical primitives, specifically lines and circles. It covers topics such as representing primitives as matrices, drawing lines using different algorithms, and the midpoint algorithm for circle drawing. The document also includes sample code in pascal.
Typology: Essays (university)
1 / 7
This page cannot be seen from the preview
Don't miss anything!




olgozás és Számítógépes Grafika Tanszék
épfeldo
2. ELŐADÁS
Algoritmusok grafikai primitívek raszteres megjelenítésére
62
olgozás és Számítógépes Grafika Tanszék
Algoritmusok raszteres
grafikához
épfeldo
63
olgozás és Számítógépes Grafika Tanszék
Egyenes rajzolása
épfeldo
64
olgozás és Számítógépes Grafika Tanszék
Alap inkrementális algoritmus
épfeldo
65
olgozás és Számítógépes Grafika Tanszék
Program
(ha |m|>1, akkor x-et cseréljük y-nal)
procedure Line(x0,y0, x1,y1, value: integer); var x : integer; dy,dx,y,m : real; begin
épfeldo
dy := y1-y0; dx := x1-x0; m := dy/dx; y := y0; for x := x0 to x1 do begin WritePixel(x, Round(y), value); y := y+m end end; {Line}
66
olgozás és Számítógépes Grafika Tanszék
Felezőpont algoritmus
egyenesre
épfeldo
67
olgozás és Számítógépes Grafika Tanszék
Felezőpont algoritmus
egyenesre
épfeldo
(^) • akkor:
x dy – y dx + y 0 dx – x 0 dy = 0
0, ha az egyenes ( x , y ) fölött fut, F ( x , y ) = 0, ha ( x , y ) az egyenesen van, < 0, ha az egyenes ( x , y ) alatt fut.
{
68
olgozás és Számítógépes Grafika Tanszék
Felezőpont kritérium
{
épfeldo
Δ E = dúj – drégi = F ( x (^) p+2,y (^) p+½ ) – F ( x (^) p+1,y (^) p+½ ) = dy,
Δ NE = F ( x (^) p+2,y (^) p+3/2 ) – F ( x (^) p+1,y (^) p+½ ) = dy – dx
69
olgozás és Számítógépes Grafika Tanszék
Felezőpont algoritmus
egyenesre
épfeldo
70
olgozás és Számítógépes Grafika Tanszék
Program
procedure MidpointLine (x0,y0,x1,y1,value: integer); var dx,dy,incrE,incrNE,d,x,y : integer; begin dx := x1-x0; dy := y1-y0; d := 2dy-dx; incrE := 2dy; incrNE := 2(dy-dx); x := x0; y := y0; WritePixel(x,y,value); while x < x1 do begin*
épfeldo
if d <= 0 then begin x := x + 1; d := d + incrE; end else begin x := x + 1; y := y + 1; d := d + incrNE; end; WritePixel(x,y,value) end {while} end; {MidpointLine}
71
olgozás és Számítógépes Grafika Tanszék
Tulajdonságok
épfeldo
72
olgozás és Számítógépes Grafika Tanszék
73
olgozás és Számítógépes Grafika Tanszék
Felezőpont algoritmus körre
ΔE = d (^) új – d (^) régi = F(x +2 y ½) F(x +1 y ½) =
épfeldo
F(xp +2,yp –½) – F(xp +1,yp –½) =
= 2xp +
ΔSE = F(x (^) p +2,yp –3/2) – F(x (^) p +1,yp –½) =
= 2xp –2yp +
80
olgozás és Számítógépes Grafika Tanszék
Felezőpont algoritmus körre
épfeldo
81
olgozás és Számítógépes Grafika Tanszék
Program
procedure MidpointCircle (radius, value : integer); var x, y : integer; d: real; begin x := 0; y := radius; d := 5/4-radius; CirclePoints (x,y,value); while y>x do begin if d<0 then begin x := x+1;
épfeldo
d := d+2x+3; end else begin x := x+1; y := y-1; d := d+2(x-y)+5; end; CirclePoints (x,y,value) end {while} end; {MidpointCircle}**
82
olgozás és Számítógépes Grafika Tanszék
Felezőpont algoritmus körre
épfeldo
83
olgozás és Számítógépes Grafika Tanszék
Program
procedure MidpointCircle (radius, value : integer); var x,y,d : integer; begin x := 0; y := radius; h := 1-radius; CirclePoints (x,y,value); while y>x do begin if h<0 then begin x := x+1;
épfeldo
h := h+2x+3; end else begin x := x+1; y := y-1; h := h+2(x-y)+5; end; CirclePoints (x,y,value) end {while} end; {MidpointCircle}**
84
olgozás és Számítógépes Grafika Tanszék
Másodrendű differenciák
épfeldo
85
olgozás és Számítógépes Grafika Tanszék
Kör rajzolása
ΔE (xp ,yp ) = 2·xp + ΔSE (xp ,yp ) = 2·xp -2·yp +5,
épfeldo
ΔE új - ΔE régi = 2, ΔSE új - ΔSE régi = 2
ΔE új - ΔE régi = 2, ΔSE új - ΔSE régi = 4
86
olgozás és Számítógépes Grafika Tanszék
Kör rajzolása
épfeldo
87
olgozás és Számítógépes Grafika Tanszék
Program
procedure MidpointCircle (radius,value : integer); var x,y,d,deltaE,deltaSE : integer; begin x := 0; y := radius; d := 1-radius; deltaE := 3; deltaSE := -2radius+5; CirclePoints(x,y,value); while y>x do begin if d<0 then begin d := d+deltaE;*
épfeldo
(^) deltaE:=deltaE+2; deltaSE:=deltaSE+2; x := x+ end else begin d := d+deltaSE; deltaE:=deltaE+2; deltaSE:=deltaSE+4; x := x+1; y := y- end; CirclePoints(x,y,value) end {while} end; {MidpointCircle}
88
olgozás és Számítógépes Grafika Tanszék
Ellipszis rajzolása
épfeldo
89
olgozás és Számítógépes Grafika Tanszék
Ellipszis rajzolása
A 1 t t á b
épfeldo
90
olgozás és Számítógépes Grafika Tanszék
Da Silva algoritmusa
{ < 0 E -t választjuk
K{
épfeldo
{
{
91
olgozás és Számítógépes Grafika Tanszék
Vonal „szaggatás”
épfeldo
98