(+1) or

advertisement
Computer graphics
Scan conversion of Line ,
circle & ellipse
Scan conversion
is the process of converting basic, low level objects in to
their corresponding pixel map representations. This is often
an approximation to the object, since the frame buffer is a
discrete grid.
Line Drawing algorithms
• Direct or floating or simple algorithm
• Digital Differential Analyzer algorithm (DDA)
• Bresenham's algorithm or midpoint algorithm
• General Bresenham's algorithm
Description:
• Given the specification for a straight line (parameters).
• find the collection of addressable pixels which most closely
approximates this line (mathematical equations) .
• Draw the scan conversion of lines (frame buffer map).
Goals
• Straight lines should appear straight.
• Lines should start and end accurately.
• Lines should be drawn as rapidly as possible.
• matching endpoints with connecting lines.
• Lines should have constant brightness.
Direct method
Description:
1. A straight line may be defined by two endpoints and an equation
If the two endpoints used to specify a line are (X1,Y1) and
(X2,Y2) ,then the equation of the line is used to describe the X
, Y coordinates of all the pointes that lie between these two
endpoints.
Y2
y1
x1
x2
2. The line equation depend on octant which contain line
Dx = x2 - x1
Octant covering in 2D space
Slope
Dy = y2 - y1
Octant
ratio
I
II
III
IV
V
VI
VII
VIII
(m)
positive
positive
negative
negative
positive
positive
negative
negative
dy > dx
dy < dx
dy < dx
dy > dx
dy > dx
dy < dx
dy < dx
dy > dx
3. The equation of straight line in octants Dx > Dy
Y= M * X + B
Where:
M is the slope of the line.
B is the Y intercept. B= Y – M * X
Note : The slope between any point (X1,Y1) on the line and (X2,Y2)
M = DY/ DX
x go from x1 to x2 with values (+1) or (-1)
EX1:- draw line between(0,1) and ( 5,4)
x
0
1
2
3
4
5
y
1
1.6
2.2
2.8
3.4
4
draw (0,1) (1,2) (2,2) (3,3) (4,3) (5,4)
0 1 2 3 4
Sol:- M= 4 -1 / 5-0 = 3/5 = 0.6 , B=1 ,
y= (0.6)*X+1
x go from x1 to x2 with integer values (+1) in each step
0
1
2
3
4
5
4. The equation of straight line in octants Dy > Dx
X= Y – B / M
y go from y1 to y2 with values (+1) or (-1)
X
Y
draw
6
1
2
(1,2)
5
1.5 3
(2.3)
4
4
(2,4)
3
2.5 5
(3,4)
2
(3,6)
1
Ex: draw line between(1,2) and ( 3,6)
sol:m= 2 , B= 0
2
3
6
1
2
3
4
5
Ex: draw line between(2,-2) and ( 6,-6)
Sol:m= -4 / 4 = -1 , B= -2 – (-1*2) = 0
2
-2
(2,-2)
3
-3
(3,-3)
4
-4
(4,-4)
5
-5
(5,-5)
6
-6
(6,-6)
2
-6
draw
-3 -4 -5
Y
-2
X
3
4
5
6
features:
•
The algorithm performs a floating-point
multiplication for every step in x. This method
therefore requires an enormous number of
floating-point multiplications, and is therefore
expensive.
• Round functions are needed
• not general for all octants
• Can get gaps in the line.
example:
y = 10.x + 2
x=1, y=12;
x=2, y=22.
Algorithm for octant with x1<x2
Dim img As New Bitmap(1, 1)
img.SetPixel(0, 0, Color.Blue)
dx = x2 - x1
dy = y2 - y1
m = dy / dx
b = y1 - m * x1
For x = x1 To x2
e.Graphics.DrawImage(img, x, Int(y))
y = m * x + b
Next
HW: develop direct method to draw lines in
octants(( Dx >Dy), slope( positive , negative))
Digital Differential Analyzer (DDA)
Description:
1. We calculate the length of the line in the X direction (
number of pointes) by the equation
Abs(x2-x1)
2. calculate the length of the line in the Y direction
( number of pointes) by the Equation
Abs(y2-y1)
Where ABS is a function takes the positive of the arguments
3. The Length estimates is equal to the larger of the
above two equations.
length=max( Abs(y2-y1) , Abs(x2-x1)
4. The increment steps ( dX and dY ) are used to
increment the X and Y coordinates for the next
pointes to be plotted.
Dx= (x2-x1) / length
Dy= (y2-y1) / length
5. each point will calculate as equation
x = x + Dx
y = y + Dy
6. Integer function works as follow( round down)
Ex. Integer (8.5) = 8
Integer (-8.5) = -9
7. first point we add 0.5
x = x1 + 0.5
y = y1 + 0.5
Ex1: Consider the line from (-8,-4) to (0,0)Use DDA to
scan conversion of line.
Sol 1 :
X1=-8 ; Y1=-4
; X2=0
;
Y2=0 ;
Length= 8
dX= 1;
dY=0.5 ;
X=-7.5 ;
Y=-3.5
-3.5
(-8,-4)
1
-6.5
-3
(-7,-3)
2
-5.5
-2.5
(-6,-3)
3
-4.5
-2
(-5,-2)
4
-3.5
-1.5
(-4,-2)
5
-2.5
-1
(-3,-1)
6
-1.5
-0.5
(-2,-1)
7
-0.5
0
(-1,0)
8
0.5
0.5
(0,0)
0
-7.5
-8 -7 -6 -5 -4 -3 -2 -1 0
-1
draw
-2
Y
-3
X
-4
I
Algorithm DDA
Start
Length=ABS (X2-X1)
If length < ABS (Y2-Y1) Then Length=ABS (Y2-Y1)
dX = (X2 - X1) / Length
dY = (Y2 - Y1) / Length
X=X1 + 0.5
Y=Y1 + 0.5
Plot (Integer (X) , Integer (Y))
For I=1 to Length
Begin
X=X + dX
Y=Y + dY
Plot (Integer (X) , Integer (Y))
End
Finish
Features of DDA
1- The algorithm is orientation dependent
2- The end point accuracy deteriorates
3- The algorithm suffer from the fact that it
must be performed using floating point arithmetic
HW1: Consider the line from (0,0) to (-8,-4)
evaluate the DDA algorithm
Download