SlideShare a Scribd company logo
1 of 43
Download to read offline
Computer Graphics :
   Bresenham Line
 Drawing Algorithm,
   Circle Drawing &
     Polygon Filling


                Sudipta Mondal
2
of
43
                                             Contents
     In today’s lecture we’ll have a look at:
        – Bresenham’s line drawing algorithm
        – Line drawing algorithm comparisons
        – Circle drawing algorithms
          • A simple technique
          • The mid-point circle algorithm
        – Polygon fill algorithms
        – Summary of raster drawing algorithms
3
of
43
             The Bresenham Line Algorithm
     The Bresenham algorithm is
     another incremental scan
     conversion algorithm
     The big advantage of this
     algorithm is that it uses only
     integer calculations
                                      Jack Bresenham
                                      worked for 27 years at
                                      IBM before entering
                                      academia. Bresenham
                                      developed his famous
                                      algorithms at IBM in
                                      the early 1960s
4
of
43
                                         The Big Idea
     Move across the x axis in unit intervals and
     at each step choose between two different y
     coordinates
                                   For example, from
      5
       (xk+1, yk+1)
                                   position (2, 3) we
      4
                                   have to choose
     (xk, yk)                      between (3, 3) and
      3                            (3, 4)
                      (xk+1, yk)
      2
                                   We would like the
                                   point that is closer to
              2     3      4     5
                                   the original line
5
of
43
       Deriving The Bresenham Line Algorithm

     At sample position
                              yk+1
     xk+1 the vertical               dupper
                                 y
     separations from the                     dlower
     mathematical line are yk
     labelled dupper and dlower           xk+1
     The y coordinate on the mathematical line at
     xk+1 is:
                    y = m( xk + 1) + b
6
of
       Deriving The Bresenham Line Algorithm
43                                  (cont…)
     So, dupper and dlower are given as follows:
                 d lower = y - yk
                         = m( xk + 1) + b - yk
     and:
               d upper = ( yk + 1) - y
                      = yk + 1 - m( xk + 1) - b
     We can use these to make a simple decision
     about which pixel is closer to the mathematical
     line
7
of
       Deriving The Bresenham Line Algorithm
43                                  (cont…)
     This simple decision is based on the difference
     between the two pixel positions:
       d lower - d upper = 2m( xk + 1) - 2 yk + 2b - 1
     Let’s substitute m with ∆y/∆x where ∆x and
     ∆y are the differences between the end-points:
                                      Dy
       Dx(d lower   - d upper ) = Dx(2 ( xk + 1) - 2 yk + 2b - 1)
                                      Dx
                             = 2Dy × xk - 2Dx × yk + 2Dy + Dx(2b - 1)

                             = 2Dy × xk - 2Dx × yk + c
8
of
       Deriving The Bresenham Line Algorithm
43                                  (cont…)
     So, a decision parameter pk for the kth step
     along a line is given by:
                pk = Dx(d lower - d upper )
                   = 2Dy × xk - 2Dx × yk + c
     The sign of the decision parameter pk is the
     same as that of dlower – dupper
     If pk is negative, then we choose the lower
     pixel, otherwise we choose the upper pixel
9
of
       Deriving The Bresenham Line Algorithm
43                                  (cont…)
     Remember coordinate changes occur along
     the x axis in unit steps so we can do
     everything with integer calculations
     At step k+1 the decision parameter is given
     as:
              pk +1 = 2Dy × xk +1 - 2Dx × yk +1 + c
     Subtracting pk from this we get:
        pk +1 - pk = 2Dy ( xk +1 - xk ) - 2Dx ( yk +1 - yk )
10
of
       Deriving The Bresenham Line Algorithm
43                                  (cont…)
     But, xk+1 is the same as xk+1 so:
             pk +1 = pk + 2Dy - 2Dx( yk +1 - yk )
     where yk+1 - yk is either 0 or 1 depending on
     the sign of pk
     The first decision parameter p0 is evaluated
     at (x0, y0) is given as:
                       p0 = 2Dy - Dx
11
of
43
                 The Bresenham Line Algorithm
            BRESENHAM’S LINE DRAWING ALGORITHM
                                (for |m| < 1.0)
     1.   Input the two line end-points, storing the left end-point
          in (x0, y0)
     2.   Plot the point (x0, y0)
     3.   Calculate the constants Δx, Δy, 2Δy, and (2Δy - 2Δx)
          and get the first value for the decision parameter as:
                             p0 = 2Dy - Dx
     4.   At each xk along the line, starting at k = 0, perform the
          following test. If pk < 0, the next point to plot is
          (xk+1, yk) and:
                            pk +1 = pk + 2Dy
12
of
43
          The Bresenham Line Algorithm (cont…)

          Otherwise, the next point to plot is (xk+1, yk+1) and:
                       pk +1 = pk + 2Dy - 2Dx
     5.   Repeat step 4 (Δx – 1) times

     Remember: The algorithm and derivation
     above assumes absolute value of slopes are
     less than 1. For other slopes we need to
     adjust the algorithm slightly.
13
of
43
                           Bresenham Example
     Let’s have a go at this
     Let’s plot the line from (20, 10) to (30, 18)
     First off calculate all of the constants:
        – Δx: 10
        – Δy: 8
        – 2Δy: 16
        – 2Δy - 2Δx: -4
     Calculate the initial decision parameter p0:
       – p0 = 2Δy – Δx = 6
14
of
43
                    Bresenham Example (cont…)

18                                                        k   pk   (xk+1,yk+1)

17                                                        0
16                                                        1

15                                                        2

14                                                        3
                                                          4
13
                                                          5
12
                                                          6
11
                                                          7
10
                                                          8
     20   21   22   23 24   25   26   27   28   29   30   9
15
of
43
                         Bresenham Exercise
     Go through the steps of the Bresenham line
     drawing algorithm for a line going from
     (21,12) to (29,16)
16
of
43
                    Bresenham Exercise (cont…)

18                                                        k   pk   (xk+1,yk+1)

17                                                        0
16                                                        1

15                                                        2

14                                                        3
                                                          4
13
                                                          5
12
                                                          6
11
                                                          7
10
                                                          8
     20   21   22   23 24   25   26   27   28   29   30
17
of
43
          Bresenham Line Algorithm Summary

     The Bresenham line algorithm has the
     following advantages:
       – An fast incremental algorithm
       – Uses only integer calculations
     Comparing this to the DDA algorithm, DDA
     has the following problems:
       – Accumulation of round-off errors can make
         the pixelated line drift away from what was
         intended
       – The rounding operations and floating point
         arithmetic involved are time consuming
18
of
43
         A Simple Circle Drawing Algorithm
     The equation for a circle is:
                      x +y =r
                       2    2    2



     where r is the radius of the circle
     So, we can write a simple circle drawing
     algorithm by solving the equation for y at
     unit x intervals using:
                      y = ± r 2 - x2
19
of
     A Simple Circle Drawing Algorithm
43                            (cont…)

                    y0 = 20 2 - 0 2 » 20

                    y1 = 202 - 12 » 20

                    y2 = 20 2 - 2 2 » 20



                    y19 = 20 2 - 19 2 » 6

                    y20 = 20 2 - 20 2 » 0
20
of
              A Simple Circle Drawing Algorithm
43                                     (cont…)
     However, unsurprisingly this is not a brilliant
     solution!
     Firstly, the resulting circle has large gaps
     where the slope approaches the vertical
     Secondly, the calculations are not very
     efficient
        – The square (multiply) operations
        – The square root operation – try really hard to
          avoid these!
     We need a more efficient, more accurate
     solution
21
of
43
                                     Eight-Way Symmetry
     The first thing we can notice to make our circle
     drawing algorithm more efficient is that circles
     centred at (0, 0) have eight-way symmetry
                          (-x, y)      (x, y)


                (-y, x)                          (y, x)

                                           R
                                            2
               (-y, -x)                          (y, -x)


                          (-x, -y)     (x, -y)
22
of
43
                    Mid-Point Circle Algorithm
     Similarly to the case with lines,
     there is an incremental
     algorithm for drawing circles –
     the mid-point circle algorithm
     In the mid-point circle algorithm
     we use eight-way symmetry so
                                         The mid-point circle
     only ever calculate the points      algorithm was
     for the top right eighth of a       developed b y Jack
                                         Bresenham, who we
     circle, and then use symmetry       heard about earlier.
     to get the rest of the points
23
of
43
         Mid-Point Circle Algorithm (cont…)
     Assume that we have
     just plotted point (xk, yk) (xk, yk) (xk+1, yk)

     The next point is a
     choice between (xk+1, yk)            (xk+1, yk-1)
     and (xk+1, yk-1)
     We would like to choose
     the point that is nearest to
     the actual circle
     So how do we make this choice?
24
of
43
         Mid-Point Circle Algorithm (cont…)
     Let’s re-jig the equation of the circle slightly
     to give us:
                    f circ ( x, y ) = x 2 + y 2 - r 2
     The equation evaluates as follows:
                      ì< 0, if ( x, y ) is inside the circle boundary
                      ï
      f circ ( x, y ) í= 0, if ( x, y ) is on the circle boundary
                      ï> 0, if ( x, y ) is outside the circle boundary
                      î
     By evaluating this function at the midpoint
     between the candidate pixels we can make
     our decision
25
of
43
        Mid-Point Circle Algorithm (cont…)
     Assuming we have just plotted the pixel at
     (xk,yk) so we need to choose between
     (xk+1,yk) and (xk+1,yk-1)
     Our decision variable can be defined as:
               pk = f circ ( xk + 1, yk - 1 )
                                           2
                  = ( xk + 1) 2 + ( yk - 1 ) 2 - r 2
                                           2
     If pk < 0 the midpoint is inside the circle and
     and the pixel at yk is closer to the circle
     Otherwise the midpoint is outside and yk-1 is
     closer
26
of
43
            Mid-Point Circle Algorithm (cont…)
     To ensure things are as efficient as possible
     we can do all of our calculations
     incrementally
     First consider:
                              (
                 pk +1 = f circ xk +1 + 1, yk +1 - 1
                                                           2
                                                             )
                      = [( xk + 1) + 1] + yk +1 - 1
                                        2
                                                   (             2
                                                                     ) -r
                                                                     2
                                                                            2

     or:
           pk +1 = pk + 2( xk + 1) + ( y    2
                                            k +1   - y ) - ( yk +1 - yk ) + 1
                                                       2
                                                       k

     where yk+1 is either yk or yk-1 depending on
     the sign of pk
27
of
43
         Mid-Point Circle Algorithm (cont…)
     The first decision variable is given as:
                   p0 = f circ (1, r - 1 )
                                        2
                      = 1 + (r - 1 ) 2 - r 2
                                      2
                      = 5 -r
                           4
     Then if pk < 0 then the next decision variable
     is given as:
                     pk +1 = pk + 2 xk +1 + 1
     If pk > 0 then the decision variable is:
                pk +1 = pk + 2 xk +1 + 1 - 2 yk + 1
28
of
43
                 The Mid-Point Circle Algorithm
                  MID-POINT CIRCLE ALGORITHM
     •   Input radius r and circle centre (xc, yc), then set the
         coordinates for the first point on the circumference of a
         circle centred on the origin as:
                            ( x0 , y0 ) = (0, r )
     •   Calculate the initial value of the decision parameter as:
                              p0 = 5 - r
                                    4
     •   Starting with k = 0 at each position xk, perform the
         following test. If pk < 0, the next point along the circle
         centred on (0, 0) is (xk+1, yk) and:
                         pk +1 = pk + 2 xk +1 + 1
29
of
43
          The Mid-Point Circle Algorithm (cont…)

          Otherwise the next point along the circle is (xk+1, yk-1)
          and:
                     pk +1 = pk + 2 xk +1 + 1 - 2 yk +1
     4.   Determine symmetry points in the other seven octants
     5.   Move each calculated pixel position (x, y) onto the
          circular path centred at (xc, yc) to plot the coordinate
          values:
                       x = x + xc       y = y + yc
     6.   Repeat steps 3 to 5 until x >= y
30
of
43
        Mid-Point Circle Algorithm Example
     To see the mid-point circle algorithm in
     action lets use it to draw a circle centred at
     (0,0) with radius 10
31
of
                 Mid-Point Circle Algorithm Example
43                                          (cont…)

10
                                                k   pk   (xk+1,yk+1)   2xk+1   2yk+1
 9
 8                                              0
 7
                                                1
 6
 5                                              2
 4
                                                3
 3
 2                                              4
 1                                              5
 0
                                                6
     0   1   2   3   4   5   6   7   8   9 10
32
of
43
        Mid-Point Circle Algorithm Exercise
     Use the mid-point circle algorithm to draw
     the circle centred at (0,0) with radius 15
33
of
                Mid-Point Circle Algorithm Example
43                                         (cont…)
16
                                                k    pk   (xk+1,yk+1)   2xk+1   2yk+1
15
14
                                                0
13
12                                              1
11                                              2
10                                              3
 9                                              4
 8
                                                5
 7
 6                                              6
 5                                              7
 4                                              8
 3
                                                9
 2
 1                                              10
 0                                              11
     0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16   12
34
of
43
      Mid-Point Circle Algorithm Summary
     The key insights in the mid-point circle
     algorithm are:
        – Eight-way symmetry can hugely reduce the
          work in drawing a circle
        – Moving in unit steps along the x axis at each
          point along the circle’s edge we need to
          choose between two possible y coordinates
35
of
43
                               Filling Polygons
     So we can figure out how to draw lines and
     circles
     How do we go about drawing polygons?
     We use an incremental algorithm known as
     the scan-line algorithm
36
of
43
          Scan-Line Polygon Fill Algorithm
     10                      Scan Line


      8



      6


      4



      2



      0
             2   4   6   8       10      12   14   16
37
of
43
            Scan-Line Polygon Fill Algorithm
     The basic scan-line algorithm is as follows:
        – Find the intersections of the scan line with all
          edges of the polygon
        – Sort the intersections by increasing x
          coordinate
        – Fill in all pixels between pairs of intersections
          that lie interior to the polygon
38
of
     Scan-Line Polygon Fill Algorithm
43                           (cont…)
39
of
43
                      Line Drawing Summary
     Over the last couple of lectures we have
     looked at the idea of scan converting lines
     The key thing to remember is this has to be
     FAST
     For lines we have either DDA or Bresenham
     For circles the mid-point algorithm
40
of
43
     Mid-Point Circle Algorithm (cont…)

                                6


                                5


                                4


                                3


           1    2    3    4
41
of
43
     Mid-Point Circle Algorithm (cont…)

                                6

               M
                                5


                                4


                                3


           1       2   3   4
42
of
43
     Mid-Point Circle Algorithm (cont…)

                                 6
                         M
                                 5


                                 4


                                 3


           1    2    3       4
43
of
43
                                               Blank Grid

     10
      9
      8
      7
      6
      5
      4
      3
      2
      1
      0

          0   1   2   3 4   5   6   7   8   9 10

More Related Content

What's hot

FEM Introduction: Solving ODE-BVP using the Galerkin's Method
FEM Introduction: Solving ODE-BVP using the Galerkin's MethodFEM Introduction: Solving ODE-BVP using the Galerkin's Method
FEM Introduction: Solving ODE-BVP using the Galerkin's MethodSuddhasheel GHOSH, PhD
 
Engineering Mathematics-IV_B.Tech_Semester-IV_Unit-IV
Engineering Mathematics-IV_B.Tech_Semester-IV_Unit-IVEngineering Mathematics-IV_B.Tech_Semester-IV_Unit-IV
Engineering Mathematics-IV_B.Tech_Semester-IV_Unit-IVRai University
 
Integration
IntegrationIntegration
Integrationsuefee
 
Epsrcws08 campbell isvm_01
Epsrcws08 campbell isvm_01Epsrcws08 campbell isvm_01
Epsrcws08 campbell isvm_01Cheng Feng
 
Kernels and Support Vector Machines
Kernels and Support Vector  MachinesKernels and Support Vector  Machines
Kernels and Support Vector MachinesEdgar Marca
 
Interpolation In Numerical Methods.
 Interpolation In Numerical Methods. Interpolation In Numerical Methods.
Interpolation In Numerical Methods.Abu Kaisar
 
Newton's forward difference
Newton's forward differenceNewton's forward difference
Newton's forward differenceRaj Parekh
 
Differential calculus
Differential calculusDifferential calculus
Differential calculusChit Laplana
 
Inner product spaces
Inner product spacesInner product spaces
Inner product spacesEasyStudy3
 
Calculus Early Transcendentals 10th Edition Anton Solutions Manual
Calculus Early Transcendentals 10th Edition Anton Solutions ManualCalculus Early Transcendentals 10th Edition Anton Solutions Manual
Calculus Early Transcendentals 10th Edition Anton Solutions Manualnodyligomi
 
5.4 Saddle-point interpretation, 5.5 Optimality conditions, 5.6 Perturbation ...
5.4 Saddle-point interpretation, 5.5 Optimality conditions, 5.6 Perturbation ...5.4 Saddle-point interpretation, 5.5 Optimality conditions, 5.6 Perturbation ...
5.4 Saddle-point interpretation, 5.5 Optimality conditions, 5.6 Perturbation ...RyotaroTsukada
 
Engr 213 midterm 1b sol 2010
Engr 213 midterm 1b sol 2010Engr 213 midterm 1b sol 2010
Engr 213 midterm 1b sol 2010akabaka12
 
Interpolation functions
Interpolation functionsInterpolation functions
Interpolation functionsTarun Gehlot
 
Newton's Forward/Backward Difference Interpolation
Newton's Forward/Backward  Difference InterpolationNewton's Forward/Backward  Difference Interpolation
Newton's Forward/Backward Difference InterpolationVARUN KUMAR
 

What's hot (20)

Nis differentiation1
Nis differentiation1Nis differentiation1
Nis differentiation1
 
FEM Introduction: Solving ODE-BVP using the Galerkin's Method
FEM Introduction: Solving ODE-BVP using the Galerkin's MethodFEM Introduction: Solving ODE-BVP using the Galerkin's Method
FEM Introduction: Solving ODE-BVP using the Galerkin's Method
 
Engineering Mathematics-IV_B.Tech_Semester-IV_Unit-IV
Engineering Mathematics-IV_B.Tech_Semester-IV_Unit-IVEngineering Mathematics-IV_B.Tech_Semester-IV_Unit-IV
Engineering Mathematics-IV_B.Tech_Semester-IV_Unit-IV
 
AP Calculus Project
AP Calculus ProjectAP Calculus Project
AP Calculus Project
 
Integration
IntegrationIntegration
Integration
 
Dr. majeed &humam paper
Dr. majeed &humam paperDr. majeed &humam paper
Dr. majeed &humam paper
 
Epsrcws08 campbell isvm_01
Epsrcws08 campbell isvm_01Epsrcws08 campbell isvm_01
Epsrcws08 campbell isvm_01
 
1639 vector-linear algebra
1639 vector-linear algebra1639 vector-linear algebra
1639 vector-linear algebra
 
Kernels and Support Vector Machines
Kernels and Support Vector  MachinesKernels and Support Vector  Machines
Kernels and Support Vector Machines
 
Chapter 1 (maths 3)
Chapter 1 (maths 3)Chapter 1 (maths 3)
Chapter 1 (maths 3)
 
Interpolation In Numerical Methods.
 Interpolation In Numerical Methods. Interpolation In Numerical Methods.
Interpolation In Numerical Methods.
 
Newton's forward difference
Newton's forward differenceNewton's forward difference
Newton's forward difference
 
Differential calculus
Differential calculusDifferential calculus
Differential calculus
 
Inner product spaces
Inner product spacesInner product spaces
Inner product spaces
 
Calculus Early Transcendentals 10th Edition Anton Solutions Manual
Calculus Early Transcendentals 10th Edition Anton Solutions ManualCalculus Early Transcendentals 10th Edition Anton Solutions Manual
Calculus Early Transcendentals 10th Edition Anton Solutions Manual
 
MA8353 TPDE
MA8353 TPDEMA8353 TPDE
MA8353 TPDE
 
5.4 Saddle-point interpretation, 5.5 Optimality conditions, 5.6 Perturbation ...
5.4 Saddle-point interpretation, 5.5 Optimality conditions, 5.6 Perturbation ...5.4 Saddle-point interpretation, 5.5 Optimality conditions, 5.6 Perturbation ...
5.4 Saddle-point interpretation, 5.5 Optimality conditions, 5.6 Perturbation ...
 
Engr 213 midterm 1b sol 2010
Engr 213 midterm 1b sol 2010Engr 213 midterm 1b sol 2010
Engr 213 midterm 1b sol 2010
 
Interpolation functions
Interpolation functionsInterpolation functions
Interpolation functions
 
Newton's Forward/Backward Difference Interpolation
Newton's Forward/Backward  Difference InterpolationNewton's Forward/Backward  Difference Interpolation
Newton's Forward/Backward Difference Interpolation
 

Viewers also liked

Lect2 scan convertinglines
Lect2 scan convertinglinesLect2 scan convertinglines
Lect2 scan convertinglinesBCET
 
Lect5 filling color_models
Lect5 filling color_modelsLect5 filling color_models
Lect5 filling color_modelsBCET
 
Windowing and clipping final1
Windowing and clipping final1Windowing and clipping final1
Windowing and clipping final1kparthjadhav
 
Open GL 09 scan conversion
Open GL 09 scan conversionOpen GL 09 scan conversion
Open GL 09 scan conversionRoziq Bahtiar
 
Lect7 viewing in2d
Lect7 viewing in2dLect7 viewing in2d
Lect7 viewing in2dBCET
 
Extended Context/Extended Media - Class 02
Extended Context/Extended Media - Class 02Extended Context/Extended Media - Class 02
Extended Context/Extended Media - Class 02Bryan Chung
 
Digital vs Analog
Digital vs AnalogDigital vs Analog
Digital vs AnalogCara Nason
 
Analog to Digital Converters
Analog to Digital ConvertersAnalog to Digital Converters
Analog to Digital ConvertersAnas Smarty
 
Cohen-sutherland & liang-basky line clipping algorithm
Cohen-sutherland & liang-basky line clipping algorithmCohen-sutherland & liang-basky line clipping algorithm
Cohen-sutherland & liang-basky line clipping algorithmShilpa Hait
 
Two dimensional viewing
Two dimensional viewingTwo dimensional viewing
Two dimensional viewingMohd Arif
 
Midpoint circle algo
Midpoint circle algoMidpoint circle algo
Midpoint circle algoMohd Arif
 
Clipping in Computer Graphics
Clipping in Computer GraphicsClipping in Computer Graphics
Clipping in Computer GraphicsLaxman Puri
 
Lecture 9 animation
Lecture 9 animationLecture 9 animation
Lecture 9 animationMr SMAK
 
Notes 2D-Transformation Unit 2 Computer graphics
Notes 2D-Transformation Unit 2 Computer graphicsNotes 2D-Transformation Unit 2 Computer graphics
Notes 2D-Transformation Unit 2 Computer graphicsNANDINI SHARMA
 

Viewers also liked (20)

Lect2 scan convertinglines
Lect2 scan convertinglinesLect2 scan convertinglines
Lect2 scan convertinglines
 
Lect5 filling color_models
Lect5 filling color_modelsLect5 filling color_models
Lect5 filling color_models
 
Windowing and clipping final1
Windowing and clipping final1Windowing and clipping final1
Windowing and clipping final1
 
Open GL 09 scan conversion
Open GL 09 scan conversionOpen GL 09 scan conversion
Open GL 09 scan conversion
 
Lect7 viewing in2d
Lect7 viewing in2dLect7 viewing in2d
Lect7 viewing in2d
 
Extended Context/Extended Media - Class 02
Extended Context/Extended Media - Class 02Extended Context/Extended Media - Class 02
Extended Context/Extended Media - Class 02
 
Digital vs Analog
Digital vs AnalogDigital vs Analog
Digital vs Analog
 
Curve clipping
Curve clippingCurve clipping
Curve clipping
 
Clipping
ClippingClipping
Clipping
 
Analog to Digital Converters
Analog to Digital ConvertersAnalog to Digital Converters
Analog to Digital Converters
 
Cohen-sutherland & liang-basky line clipping algorithm
Cohen-sutherland & liang-basky line clipping algorithmCohen-sutherland & liang-basky line clipping algorithm
Cohen-sutherland & liang-basky line clipping algorithm
 
Two dimensional viewing
Two dimensional viewingTwo dimensional viewing
Two dimensional viewing
 
Midpoint circle algo
Midpoint circle algoMidpoint circle algo
Midpoint circle algo
 
Clipping in Computer Graphics
Clipping in Computer GraphicsClipping in Computer Graphics
Clipping in Computer Graphics
 
Windows and viewport
Windows and viewportWindows and viewport
Windows and viewport
 
Clipping
ClippingClipping
Clipping
 
Principles of animation
Principles of animationPrinciples of animation
Principles of animation
 
Lecture 9 animation
Lecture 9 animationLecture 9 animation
Lecture 9 animation
 
Curves and surfaces
Curves and surfacesCurves and surfaces
Curves and surfaces
 
Notes 2D-Transformation Unit 2 Computer graphics
Notes 2D-Transformation Unit 2 Computer graphicsNotes 2D-Transformation Unit 2 Computer graphics
Notes 2D-Transformation Unit 2 Computer graphics
 

Similar to Computer Graphics Algorithms: Bresenham Line Drawing, Circle Drawing & Polygon Filling

Lecture-4-Scan_Conversion_Bresenhams_Algorithm.ppt
Lecture-4-Scan_Conversion_Bresenhams_Algorithm.pptLecture-4-Scan_Conversion_Bresenhams_Algorithm.ppt
Lecture-4-Scan_Conversion_Bresenhams_Algorithm.pptKhondokarMdMehediHas
 
Lab lecture 2 bresenham
Lab lecture 2 bresenhamLab lecture 2 bresenham
Lab lecture 2 bresenhamsimpleok
 
Bresenham's line drawing algorithm
Bresenham's line drawing algorithmBresenham's line drawing algorithm
Bresenham's line drawing algorithmnehrurevathy
 
Output Primitive and Brenshamas Line.pptx
Output Primitive and Brenshamas Line.pptxOutput Primitive and Brenshamas Line.pptx
Output Primitive and Brenshamas Line.pptxNaveenaKarthik3
 
Lines and curves algorithms
Lines and curves algorithmsLines and curves algorithms
Lines and curves algorithmsMohammad Sadiq
 
Computer graphics LINE DRAWING algorithm.pptx
Computer graphics LINE DRAWING algorithm.pptxComputer graphics LINE DRAWING algorithm.pptx
Computer graphics LINE DRAWING algorithm.pptxR S Anu Prabha
 
Bresenham's line algorithm
Bresenham's line algorithmBresenham's line algorithm
Bresenham's line algorithmPooja Dixit
 
Chapter 3 Output Primitives
Chapter 3 Output PrimitivesChapter 3 Output Primitives
Chapter 3 Output PrimitivesPrathimaBaliga
 
Bresenham derivation
Bresenham derivationBresenham derivation
Bresenham derivationKumar
 
Bresenham derivation
Bresenham derivationBresenham derivation
Bresenham derivationMuhammad Fiaz
 
Unit 2
Unit 2Unit 2
Unit 2ypnrao
 
Graphics6 bresenham circlesandpolygons
Graphics6 bresenham circlesandpolygonsGraphics6 bresenham circlesandpolygons
Graphics6 bresenham circlesandpolygonsThirunavukarasu Mani
 
Graphics6 bresenham circlesandpolygons
Graphics6 bresenham circlesandpolygonsGraphics6 bresenham circlesandpolygons
Graphics6 bresenham circlesandpolygonsKetan Jani
 
Unit-2 raster scan graphics,line,circle and polygon algorithms
Unit-2 raster scan graphics,line,circle and polygon algorithmsUnit-2 raster scan graphics,line,circle and polygon algorithms
Unit-2 raster scan graphics,line,circle and polygon algorithmsAmol Gaikwad
 

Similar to Computer Graphics Algorithms: Bresenham Line Drawing, Circle Drawing & Polygon Filling (20)

Bresenhams
BresenhamsBresenhams
Bresenhams
 
Lecture-4-Scan_Conversion_Bresenhams_Algorithm.ppt
Lecture-4-Scan_Conversion_Bresenhams_Algorithm.pptLecture-4-Scan_Conversion_Bresenhams_Algorithm.ppt
Lecture-4-Scan_Conversion_Bresenhams_Algorithm.ppt
 
bresenham circles and polygons in computer graphics(Computer graphics tutorials)
bresenham circles and polygons in computer graphics(Computer graphics tutorials)bresenham circles and polygons in computer graphics(Computer graphics tutorials)
bresenham circles and polygons in computer graphics(Computer graphics tutorials)
 
Lab lecture 2 bresenham
Lab lecture 2 bresenhamLab lecture 2 bresenham
Lab lecture 2 bresenham
 
Bresenham's line drawing algorithm
Bresenham's line drawing algorithmBresenham's line drawing algorithm
Bresenham's line drawing algorithm
 
Output Primitive and Brenshamas Line.pptx
Output Primitive and Brenshamas Line.pptxOutput Primitive and Brenshamas Line.pptx
Output Primitive and Brenshamas Line.pptx
 
Computer graphics 2
Computer graphics 2Computer graphics 2
Computer graphics 2
 
Lines and curves algorithms
Lines and curves algorithmsLines and curves algorithms
Lines and curves algorithms
 
Computer graphics LINE DRAWING algorithm.pptx
Computer graphics LINE DRAWING algorithm.pptxComputer graphics LINE DRAWING algorithm.pptx
Computer graphics LINE DRAWING algorithm.pptx
 
Bresenham's line algorithm
Bresenham's line algorithmBresenham's line algorithm
Bresenham's line algorithm
 
Chapter 3 Output Primitives
Chapter 3 Output PrimitivesChapter 3 Output Primitives
Chapter 3 Output Primitives
 
Bresenham derivation
Bresenham derivationBresenham derivation
Bresenham derivation
 
Bresenham derivation
Bresenham derivationBresenham derivation
Bresenham derivation
 
lecture 1.pptx
lecture 1.pptxlecture 1.pptx
lecture 1.pptx
 
Unit 2
Unit 2Unit 2
Unit 2
 
module 1.pdf
module 1.pdfmodule 1.pdf
module 1.pdf
 
Dda algo notes
Dda algo notesDda algo notes
Dda algo notes
 
Graphics6 bresenham circlesandpolygons
Graphics6 bresenham circlesandpolygonsGraphics6 bresenham circlesandpolygons
Graphics6 bresenham circlesandpolygons
 
Graphics6 bresenham circlesandpolygons
Graphics6 bresenham circlesandpolygonsGraphics6 bresenham circlesandpolygons
Graphics6 bresenham circlesandpolygons
 
Unit-2 raster scan graphics,line,circle and polygon algorithms
Unit-2 raster scan graphics,line,circle and polygon algorithmsUnit-2 raster scan graphics,line,circle and polygon algorithms
Unit-2 raster scan graphics,line,circle and polygon algorithms
 

More from BCET

Lect11 clipping in3d
Lect11 clipping in3dLect11 clipping in3d
Lect11 clipping in3dBCET
 
Lect9 transformation3d
Lect9 transformation3dLect9 transformation3d
Lect9 transformation3dBCET
 
Lect8 viewing in3d&transformation
Lect8 viewing in3d&transformationLect8 viewing in3d&transformation
Lect8 viewing in3d&transformationBCET
 
Lect6 transformation2d
Lect6 transformation2dLect6 transformation2d
Lect6 transformation2dBCET
 
Lect4 ellipse
Lect4 ellipseLect4 ellipse
Lect4 ellipseBCET
 
Lect2 scan convertinglines
Lect2 scan convertinglinesLect2 scan convertinglines
Lect2 scan convertinglinesBCET
 
Light pens
Light pensLight pens
Light pensBCET
 
Lcd
LcdLcd
LcdBCET
 
Graphics inputdevices
Graphics inputdevicesGraphics inputdevices
Graphics inputdevicesBCET
 
Crt
CrtCrt
CrtBCET
 
Colour models
Colour modelsColour models
Colour modelsBCET
 
Cathode ray tube
Cathode ray tubeCathode ray tube
Cathode ray tubeBCET
 
Plasma display pannel
Plasma display pannelPlasma display pannel
Plasma display pannelBCET
 
php&mysql with Ethical Hacking
php&mysql with Ethical Hackingphp&mysql with Ethical Hacking
php&mysql with Ethical HackingBCET
 

More from BCET (14)

Lect11 clipping in3d
Lect11 clipping in3dLect11 clipping in3d
Lect11 clipping in3d
 
Lect9 transformation3d
Lect9 transformation3dLect9 transformation3d
Lect9 transformation3d
 
Lect8 viewing in3d&transformation
Lect8 viewing in3d&transformationLect8 viewing in3d&transformation
Lect8 viewing in3d&transformation
 
Lect6 transformation2d
Lect6 transformation2dLect6 transformation2d
Lect6 transformation2d
 
Lect4 ellipse
Lect4 ellipseLect4 ellipse
Lect4 ellipse
 
Lect2 scan convertinglines
Lect2 scan convertinglinesLect2 scan convertinglines
Lect2 scan convertinglines
 
Light pens
Light pensLight pens
Light pens
 
Lcd
LcdLcd
Lcd
 
Graphics inputdevices
Graphics inputdevicesGraphics inputdevices
Graphics inputdevices
 
Crt
CrtCrt
Crt
 
Colour models
Colour modelsColour models
Colour models
 
Cathode ray tube
Cathode ray tubeCathode ray tube
Cathode ray tube
 
Plasma display pannel
Plasma display pannelPlasma display pannel
Plasma display pannel
 
php&mysql with Ethical Hacking
php&mysql with Ethical Hackingphp&mysql with Ethical Hacking
php&mysql with Ethical Hacking
 

Computer Graphics Algorithms: Bresenham Line Drawing, Circle Drawing & Polygon Filling

  • 1. Computer Graphics : Bresenham Line Drawing Algorithm, Circle Drawing & Polygon Filling Sudipta Mondal
  • 2. 2 of 43 Contents In today’s lecture we’ll have a look at: – Bresenham’s line drawing algorithm – Line drawing algorithm comparisons – Circle drawing algorithms • A simple technique • The mid-point circle algorithm – Polygon fill algorithms – Summary of raster drawing algorithms
  • 3. 3 of 43 The Bresenham Line Algorithm The Bresenham algorithm is another incremental scan conversion algorithm The big advantage of this algorithm is that it uses only integer calculations Jack Bresenham worked for 27 years at IBM before entering academia. Bresenham developed his famous algorithms at IBM in the early 1960s
  • 4. 4 of 43 The Big Idea Move across the x axis in unit intervals and at each step choose between two different y coordinates For example, from 5 (xk+1, yk+1) position (2, 3) we 4 have to choose (xk, yk) between (3, 3) and 3 (3, 4) (xk+1, yk) 2 We would like the point that is closer to 2 3 4 5 the original line
  • 5. 5 of 43 Deriving The Bresenham Line Algorithm At sample position yk+1 xk+1 the vertical dupper y separations from the dlower mathematical line are yk labelled dupper and dlower xk+1 The y coordinate on the mathematical line at xk+1 is: y = m( xk + 1) + b
  • 6. 6 of Deriving The Bresenham Line Algorithm 43 (cont…) So, dupper and dlower are given as follows: d lower = y - yk = m( xk + 1) + b - yk and: d upper = ( yk + 1) - y = yk + 1 - m( xk + 1) - b We can use these to make a simple decision about which pixel is closer to the mathematical line
  • 7. 7 of Deriving The Bresenham Line Algorithm 43 (cont…) This simple decision is based on the difference between the two pixel positions: d lower - d upper = 2m( xk + 1) - 2 yk + 2b - 1 Let’s substitute m with ∆y/∆x where ∆x and ∆y are the differences between the end-points: Dy Dx(d lower - d upper ) = Dx(2 ( xk + 1) - 2 yk + 2b - 1) Dx = 2Dy × xk - 2Dx × yk + 2Dy + Dx(2b - 1) = 2Dy × xk - 2Dx × yk + c
  • 8. 8 of Deriving The Bresenham Line Algorithm 43 (cont…) So, a decision parameter pk for the kth step along a line is given by: pk = Dx(d lower - d upper ) = 2Dy × xk - 2Dx × yk + c The sign of the decision parameter pk is the same as that of dlower – dupper If pk is negative, then we choose the lower pixel, otherwise we choose the upper pixel
  • 9. 9 of Deriving The Bresenham Line Algorithm 43 (cont…) Remember coordinate changes occur along the x axis in unit steps so we can do everything with integer calculations At step k+1 the decision parameter is given as: pk +1 = 2Dy × xk +1 - 2Dx × yk +1 + c Subtracting pk from this we get: pk +1 - pk = 2Dy ( xk +1 - xk ) - 2Dx ( yk +1 - yk )
  • 10. 10 of Deriving The Bresenham Line Algorithm 43 (cont…) But, xk+1 is the same as xk+1 so: pk +1 = pk + 2Dy - 2Dx( yk +1 - yk ) where yk+1 - yk is either 0 or 1 depending on the sign of pk The first decision parameter p0 is evaluated at (x0, y0) is given as: p0 = 2Dy - Dx
  • 11. 11 of 43 The Bresenham Line Algorithm BRESENHAM’S LINE DRAWING ALGORITHM (for |m| < 1.0) 1. Input the two line end-points, storing the left end-point in (x0, y0) 2. Plot the point (x0, y0) 3. Calculate the constants Δx, Δy, 2Δy, and (2Δy - 2Δx) and get the first value for the decision parameter as: p0 = 2Dy - Dx 4. At each xk along the line, starting at k = 0, perform the following test. If pk < 0, the next point to plot is (xk+1, yk) and: pk +1 = pk + 2Dy
  • 12. 12 of 43 The Bresenham Line Algorithm (cont…) Otherwise, the next point to plot is (xk+1, yk+1) and: pk +1 = pk + 2Dy - 2Dx 5. Repeat step 4 (Δx – 1) times Remember: The algorithm and derivation above assumes absolute value of slopes are less than 1. For other slopes we need to adjust the algorithm slightly.
  • 13. 13 of 43 Bresenham Example Let’s have a go at this Let’s plot the line from (20, 10) to (30, 18) First off calculate all of the constants: – Δx: 10 – Δy: 8 – 2Δy: 16 – 2Δy - 2Δx: -4 Calculate the initial decision parameter p0: – p0 = 2Δy – Δx = 6
  • 14. 14 of 43 Bresenham Example (cont…) 18 k pk (xk+1,yk+1) 17 0 16 1 15 2 14 3 4 13 5 12 6 11 7 10 8 20 21 22 23 24 25 26 27 28 29 30 9
  • 15. 15 of 43 Bresenham Exercise Go through the steps of the Bresenham line drawing algorithm for a line going from (21,12) to (29,16)
  • 16. 16 of 43 Bresenham Exercise (cont…) 18 k pk (xk+1,yk+1) 17 0 16 1 15 2 14 3 4 13 5 12 6 11 7 10 8 20 21 22 23 24 25 26 27 28 29 30
  • 17. 17 of 43 Bresenham Line Algorithm Summary The Bresenham line algorithm has the following advantages: – An fast incremental algorithm – Uses only integer calculations Comparing this to the DDA algorithm, DDA has the following problems: – Accumulation of round-off errors can make the pixelated line drift away from what was intended – The rounding operations and floating point arithmetic involved are time consuming
  • 18. 18 of 43 A Simple Circle Drawing Algorithm The equation for a circle is: x +y =r 2 2 2 where r is the radius of the circle So, we can write a simple circle drawing algorithm by solving the equation for y at unit x intervals using: y = ± r 2 - x2
  • 19. 19 of A Simple Circle Drawing Algorithm 43 (cont…) y0 = 20 2 - 0 2 » 20 y1 = 202 - 12 » 20 y2 = 20 2 - 2 2 » 20 y19 = 20 2 - 19 2 » 6 y20 = 20 2 - 20 2 » 0
  • 20. 20 of A Simple Circle Drawing Algorithm 43 (cont…) However, unsurprisingly this is not a brilliant solution! Firstly, the resulting circle has large gaps where the slope approaches the vertical Secondly, the calculations are not very efficient – The square (multiply) operations – The square root operation – try really hard to avoid these! We need a more efficient, more accurate solution
  • 21. 21 of 43 Eight-Way Symmetry The first thing we can notice to make our circle drawing algorithm more efficient is that circles centred at (0, 0) have eight-way symmetry (-x, y) (x, y) (-y, x) (y, x) R 2 (-y, -x) (y, -x) (-x, -y) (x, -y)
  • 22. 22 of 43 Mid-Point Circle Algorithm Similarly to the case with lines, there is an incremental algorithm for drawing circles – the mid-point circle algorithm In the mid-point circle algorithm we use eight-way symmetry so The mid-point circle only ever calculate the points algorithm was for the top right eighth of a developed b y Jack Bresenham, who we circle, and then use symmetry heard about earlier. to get the rest of the points
  • 23. 23 of 43 Mid-Point Circle Algorithm (cont…) Assume that we have just plotted point (xk, yk) (xk, yk) (xk+1, yk) The next point is a choice between (xk+1, yk) (xk+1, yk-1) and (xk+1, yk-1) We would like to choose the point that is nearest to the actual circle So how do we make this choice?
  • 24. 24 of 43 Mid-Point Circle Algorithm (cont…) Let’s re-jig the equation of the circle slightly to give us: f circ ( x, y ) = x 2 + y 2 - r 2 The equation evaluates as follows: ì< 0, if ( x, y ) is inside the circle boundary ï f circ ( x, y ) í= 0, if ( x, y ) is on the circle boundary ï> 0, if ( x, y ) is outside the circle boundary î By evaluating this function at the midpoint between the candidate pixels we can make our decision
  • 25. 25 of 43 Mid-Point Circle Algorithm (cont…) Assuming we have just plotted the pixel at (xk,yk) so we need to choose between (xk+1,yk) and (xk+1,yk-1) Our decision variable can be defined as: pk = f circ ( xk + 1, yk - 1 ) 2 = ( xk + 1) 2 + ( yk - 1 ) 2 - r 2 2 If pk < 0 the midpoint is inside the circle and and the pixel at yk is closer to the circle Otherwise the midpoint is outside and yk-1 is closer
  • 26. 26 of 43 Mid-Point Circle Algorithm (cont…) To ensure things are as efficient as possible we can do all of our calculations incrementally First consider: ( pk +1 = f circ xk +1 + 1, yk +1 - 1 2 ) = [( xk + 1) + 1] + yk +1 - 1 2 ( 2 ) -r 2 2 or: pk +1 = pk + 2( xk + 1) + ( y 2 k +1 - y ) - ( yk +1 - yk ) + 1 2 k where yk+1 is either yk or yk-1 depending on the sign of pk
  • 27. 27 of 43 Mid-Point Circle Algorithm (cont…) The first decision variable is given as: p0 = f circ (1, r - 1 ) 2 = 1 + (r - 1 ) 2 - r 2 2 = 5 -r 4 Then if pk < 0 then the next decision variable is given as: pk +1 = pk + 2 xk +1 + 1 If pk > 0 then the decision variable is: pk +1 = pk + 2 xk +1 + 1 - 2 yk + 1
  • 28. 28 of 43 The Mid-Point Circle Algorithm MID-POINT CIRCLE ALGORITHM • Input radius r and circle centre (xc, yc), then set the coordinates for the first point on the circumference of a circle centred on the origin as: ( x0 , y0 ) = (0, r ) • Calculate the initial value of the decision parameter as: p0 = 5 - r 4 • Starting with k = 0 at each position xk, perform the following test. If pk < 0, the next point along the circle centred on (0, 0) is (xk+1, yk) and: pk +1 = pk + 2 xk +1 + 1
  • 29. 29 of 43 The Mid-Point Circle Algorithm (cont…) Otherwise the next point along the circle is (xk+1, yk-1) and: pk +1 = pk + 2 xk +1 + 1 - 2 yk +1 4. Determine symmetry points in the other seven octants 5. Move each calculated pixel position (x, y) onto the circular path centred at (xc, yc) to plot the coordinate values: x = x + xc y = y + yc 6. Repeat steps 3 to 5 until x >= y
  • 30. 30 of 43 Mid-Point Circle Algorithm Example To see the mid-point circle algorithm in action lets use it to draw a circle centred at (0,0) with radius 10
  • 31. 31 of Mid-Point Circle Algorithm Example 43 (cont…) 10 k pk (xk+1,yk+1) 2xk+1 2yk+1 9 8 0 7 1 6 5 2 4 3 3 2 4 1 5 0 6 0 1 2 3 4 5 6 7 8 9 10
  • 32. 32 of 43 Mid-Point Circle Algorithm Exercise Use the mid-point circle algorithm to draw the circle centred at (0,0) with radius 15
  • 33. 33 of Mid-Point Circle Algorithm Example 43 (cont…) 16 k pk (xk+1,yk+1) 2xk+1 2yk+1 15 14 0 13 12 1 11 2 10 3 9 4 8 5 7 6 6 5 7 4 8 3 9 2 1 10 0 11 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 12
  • 34. 34 of 43 Mid-Point Circle Algorithm Summary The key insights in the mid-point circle algorithm are: – Eight-way symmetry can hugely reduce the work in drawing a circle – Moving in unit steps along the x axis at each point along the circle’s edge we need to choose between two possible y coordinates
  • 35. 35 of 43 Filling Polygons So we can figure out how to draw lines and circles How do we go about drawing polygons? We use an incremental algorithm known as the scan-line algorithm
  • 36. 36 of 43 Scan-Line Polygon Fill Algorithm 10 Scan Line 8 6 4 2 0 2 4 6 8 10 12 14 16
  • 37. 37 of 43 Scan-Line Polygon Fill Algorithm The basic scan-line algorithm is as follows: – Find the intersections of the scan line with all edges of the polygon – Sort the intersections by increasing x coordinate – Fill in all pixels between pairs of intersections that lie interior to the polygon
  • 38. 38 of Scan-Line Polygon Fill Algorithm 43 (cont…)
  • 39. 39 of 43 Line Drawing Summary Over the last couple of lectures we have looked at the idea of scan converting lines The key thing to remember is this has to be FAST For lines we have either DDA or Bresenham For circles the mid-point algorithm
  • 40. 40 of 43 Mid-Point Circle Algorithm (cont…) 6 5 4 3 1 2 3 4
  • 41. 41 of 43 Mid-Point Circle Algorithm (cont…) 6 M 5 4 3 1 2 3 4
  • 42. 42 of 43 Mid-Point Circle Algorithm (cont…) 6 M 5 4 3 1 2 3 4
  • 43. 43 of 43 Blank Grid 10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10