Professional Documents
Culture Documents
Vcc Pixel cv
ccvtrnguynnnngthngcvgingnhhnhbcthang (do lmtrn).
Vntralchncctanguyngnvingthng
2. Thutton DDA (Digital differential analyzer)
= yk + y = yk + m.x
= yk + m
= xk + 1/m
= yk - m
(0<m1, x= -1)
xk+1
= xk - 1/m
(m>1, y= -1)
y = y2 - y1
Khitoccgitr:
IncX = x/Step;
x = x1;
y1;
y=
{Chn imvutin}
Vim (x,y);
Cho i chy t 1 n Step:
x = x + IncX;
y = y + IncY;
Vim (Round(x),Round(y))
xi
xi+1
yi+1
yi
Hnh 1.2
3. ThuttonBresenham
Phngtrnhngthngcthphtbiudidng: y = m.x + b
(1)
(*)
x = x2 - x1
y = y2 - y1
(*) y = x. + y1 - x1.
Suyra m = nn
y = m. x
(2)
b = y1 - m.x1 (3)
Ta chxttrnghphsgc 0<m<1.
Gisim (xi,yi) cv. Ta phichnimktipl:
(xi + 1,yi) hoc (xi +1,yi +1)
(Xemhnh 1.2)
Xtkhongcchgia 2
imchnviimnmtrnngthc.Nukhongcchnobhnth ta lyim.
t:
d1 = y - yi = m.(xi +1) + b - yi
d2 = (yi +1) - y = yi + 1 - m.(xi + 1) - b
Suyra:
d1 - d2 = 2m.(xi + 1) - 2yi + 2b - 1
= 2. .(xi + 1) - 2yi + 2b - 1
pi = x(d1 - d2)
th
pi = 2y.xi - 2x.yi + C
C = 2y + x.(2b - 1)
v
(4)
Suyra:
pi+1 - pi = 2y(xi+1 - xi) - 2x(yi - yi+1)
= 2y - 2x(yi+1 - yi)
(5)
( v xi+1 - xi = 1 )
* Nhnxt:
. Nu pi < 0: Chn yi+1 = yi T (5) pi+1 = pi + 2y.
. Nu pi 0: Chn yi+1 =yi + 1
(d1<d2)
(d1>d2)
nu pi < 0
pi+1 = pi + 2.( y - x)
nu pi 0
Sauylthtccitthutton:
Procedure LINE(x1,y1,x2,y2:integer); { 0<m<1}
var dx,dy,x,y,p,c1,c2,xMax:integer;
Begin
dx:=abs(x1-x2);
dy:=abs(y1-y2);
c1:=2*dy;
c2:=2*(dy-dx);
p:=2*dy-dx;
if x1>x2 then
begin
x:=x2; y:=y2; xMax:=x1;
end
else
begin
x:=x1;y:=y1;xMax:=x2;
end;
putpixel(x,y,red);
while x<xMax do
begin
x:=x+1;
if p<0 then p:=p+c1
else begin
y:=y+1;
p:=p+c2;
end;
putpixel(x,y,red);
end;
end;
4. ThuttonMidPoint
Ta chxttrnghphsgc 0<m<1.
ThuttonnyaracchchnimS(xi+1,yi) hay P(xi+1,yi+1) bngcch so
snhimthc Q(xi+1,y) viim M (trungimca S v P).
Nuim Q nmdiim M th chnim S
Ngcli, chnim P. (Xemhnh 1.3)
Ta cdngtngqutcaphngtrnhngthng:
Ax + By + C = 0
vi A = y2 y1 , B = (x2 x1) ,
C = x2.y1 x1.y2
t F(x,y) = Ax + By + C, ta cnhnxt:
< 0 nu (x,y) nmphatrnngthng
Mtkhc:
pi
= F(xi + 1,yi + )
Viimmtutin, ta c:
p1 = F(x1 + 1,y1 + ) = A(x1+1) + B(y1 + ) + C
= Ax1 + Bx1 + C + A + = A + (v Ax1 + Bx1 + C = 0)
ThuttonMidPointchoktqutngtnhthuttonBresenham.