Computer Graphics : Bresenham Line Drawing Algorithm, Circle Drawing

Slides:



Advertisements
Similar presentations
Circle Drawing Asst. Prof. Dr. Ahmet Sayar Kocaeli University
Advertisements

Contents In today’s lecture we’ll have a look at:
Graphics Primitives Part II: Bresenhams line and circle.
Graphics Primitives: line
CS 376 Introduction to Computer Graphics 02 / 02 / 2007 Instructor: Michael Eckmann.
Computer Graphics 4: Bresenham Line Drawing Algorithm, Circle Drawing & Polygon Filling By:Kanwarjeet Singh.
1 King ABDUL AZIZ University Faculty Of Computing and Information Technology CS 454 Computer graphics Drawing Elementary Figures Dr. Eng. Farag Elnagahy.
CS 450: COMPUTER GRAPHICS REVIEW: DRAWING LINES AND CIRCLES SPRING 2015 DR. MICHAEL J. REALE.
+ CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.
ECE291 Computer Engineering II Lecture 19 Josh Potts University of Illinois at Urbana- Champaign.
Scan conversion of Line , circle & ellipse
Line Drawing Algorithms. Rasterization-Process of determining which pixels give the best approximation to a desired line on the screen. Scan Conversion-Digitizing.
Larry F. Hodges (modified by Amos Johnson) 1 Design of Line, Circle & Ellipse Algorithms.
Lecture 17 Fun with Graphics Dr. Dimitrios S. Nikolopoulos CSL/UIUC.
The lines of this object appear continuous However, they are made of pixels 2April 13, 2015.
Lecture 16 Fun with graphics
2D Output Primitives Graphics packages provide basic operations (called primitive operations) to describe a scene in terms of geometric structures. The.
Raster conversion algorithms for line and circle
Course Website: Computer Graphics 5: Line Drawing Algorithms.
Line Drawing by Algorithm. Line Drawing Algorithms Line drawn as pixels Graphics system –Projects the endpoints to their pixel locations in the frame.
Rasterization Foley, Ch: 3. Pixels are represented as disjoint circles centered on uniform grid Each (x,y) of the grid has a pixel Y X (1,1) (1,2) (0,0)
CS 450: COMPUTER GRAPHICS DRAWING LINES AND CIRCLES SPRING 2015 DR. MICHAEL J. REALE.
Circle Drawing algo..
Computer Graphics- SCC 342
CGMB214: Introduction to Computer Graphics
Dr. S.M. Malaek Assistant: M. Younesi
Graphics Primitives: line. Pixel Position
WHERE TO DRAW A LINE?? Line drawing is accomplished by calculating intermediate positions along the line path between specified end points. Precise definition.
Scan Conversion Line and Circle
Informationsteknologi Monday, November 26, 2007Computer Graphics - Class 121 Today’s class Drawing lines Bresenham’s algorithm Compositing Polygon filling.
CS 325 Introduction to Computer Graphics 02 / 01 / 2010 Instructor: Michael Eckmann.
Introduction Computer Graphics & Its application Types of computer graphics Graphic display : random Scan & Raster Scan display Frame buffer and video.
Graphics Output Primitives
CGMB214: Introduction to Computer Graphics
 A line segment in a scene is defined by the coordinate positions of the line end-points x y (2, 2) (7, 5)
Chapter 3 Scan Conversion Lecture-02. Bresenham’s Line Algorithm Bresenham’s line algorithm – is a highly efficient incremental method for scan- converting.
MIDPOINT CIRCLE & ELLIPSE GENERARTING ALGORITHMS
November 18, We could solve for y in terms of x ( x 0, y 0 ) are the origin points A Simple Circle Drawing Algorithm The equation for a circle.
CS-321 Dr. Mark L. Hornick 1 Line Drawing Algorithms.
10/15/02 (c) 2002 University of Wisconsin, CS559 Who Am I? Prof Stephen Chenney These notes will be online after the lecture – in fact they’re online already.
CS 325 Introduction to Computer Graphics 02 / 03 / 2010 Instructor: Michael Eckmann.
GEOMETRY AND LINE GENERATION Geometry and Line Generation Chapter 2.
Bresenham’s Line Algorithm
Lecture 2: 19/4/1435 Graphical algorithms Lecturer/ Kawther Abas CS- 375 Graphics and Human Computer Interaction.
Instructor: Dr. Shereen Aly Taie If (P>0)
Computer Graphics CC416 Lecture 04: Bresenham Line Algorithm & Mid-point circle algorithm Dr. Manal Helal – Fall 2014.
Write Bresenham’s algorithm for generation of line also indicate which raster locations would be chosen by Bresenham’s algorithm when scan converting.
Computer Graphics Inf4/MSc Computer Graphics Lecture 4 Line & Circle Drawing.
10/10/2006TCSS458A Isabelle Bichindaritz1 Line and Circle Drawing Algorithms.
Computer Graphics Lecture 07 Ellipse and Other Curves Taqdees A. Siddiqi
Computer Graphics Lecture 06 Circle Drawing Techniques Taqdees A. Siddiqi
Computer Graphics : output primitives.. 2 of 32 T1 – pp. 103–123, 137–145, 147–150, 164–171 Points and LinesPoints Line Drawing AlgorithmsLine Mid–Point.
Rasterization, or “What is glBegin(GL_LINES) really doing?” Course web page: February 23, 2012  Lecture 4.
Line Drawing Algorithms 1. A line in Computer graphics is a portion of straight line that extends indefinitely in opposite direction. 2. It is defined.
Objectives Understand Bresenhams line drawing algorithm. Apply the algorithm to plot a line with the end points specified.
Primitive graphic objects
Scan Conversion or Rasterization
Raster Graphics.
MID-POINT CIRCLE ALGORITHM
Lecture 9 Line Drawing Algorithms (Bresenham’s Line Algorithm)
CS G140 Graduate Computer Graphics
Scan Conversion or Rasterization
Lecture 05: Mid-point Ellipse algorithm Dr. Manal Helal – Fall 2014
Chapter Three Part I Output Primitives CS 380.
2D Scan-line Conversion
Rasterization and Antialiasing
Rasterization and Antialiasing
Chapter 3 Graphics Output Primitives
Line Drawing Algorithms
Presentation transcript:

Computer Graphics : Bresenham Line Drawing Algorithm, Circle Drawing

Contents In today’s lecture we’ll have a look at: Bresenham’s line drawing algorithm (recap) Line drawing algorithm comparisons Slope independent line drawing Circle drawing algorithms A simple technique The mid-point circle algorithm

The Big Idea Move across the x axis in unit intervals and at each step choose between two different y coordinates For example, from position (2, 3) we have to choose between (3, 3) and (3, 4) We would like the point that is closer to the original line 5 (xk+1, yk+1) 4 (xk, yk) 3 (xk+1, yk) 2 2 3 4 5

Deriving The Bresenham Line Algorithm At sample position xk+1 the vertical separations from the mathematical line are labelled dupper and dlower y yk yk+1 xk+1 dlower dupper The y coordinate on the mathematical line at xk+1 is:

Slope Dependent Line Drawing Four slopes: 0<m<1 -1<m<0 m>1 m<-1

Slope Dependent Line Drawing If 0<m<1 { While(x<x1) P=2dy-dx; P1=2dy; P2=2dy-2dx; If(p<0) P+=P1; } Else P+=P2; Y++; X++; Else if (-1<m<0) { While(x<x1) P=-2dy-dx; P1=-2dy; P2=-2dy-2dx; If(p<0) P+=P1; } Else P+=P2; Y--; X++; Else if (m>1) { While(y<y1) P=2dx-dy; P1=2dx; P2=2dx-2dy; If(p<0) P+=P1; } Else P+=P2; X++; Y++; Else if(m<-1) { While(y1<y) P=-2dx-dy; P1=-2dx-2dy; P2=-2dx; If(p<0) P+=P1; X++; } Else P+=P2; Y--;

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

Slope Independent Line Drawing 8 zones: (0-7) dy>dx possible zones: 1,2,5,6 dx>dy possible zones: 0,3,4,7 dy(+ve) possible zones: 0,1,2,3 dy(-ve) possible zones: 4,5,6,7 dx(+ve) possible zones: 0,1,7,6 dx(-ve) possible zones: 2,3,4,5 Determine zone for given pair of coordinates!!! dy dx

Slope Independent Line Drawing (-8,18) (8,18) 2 1 3 (18,8) (-2,5) (2,5) (5,2) 4 7 5 6

Slope Independent Line Drawing Convert coordinate from any zone to zone0 (symmetry) Zone To zone0 (x,y) 1 (y,x) 2 (-y,x) 3 (-x,y) 4 (-x,-y) 5 (-y,-x) 6 (y,-x) 7 (x,-y)

Slope Independent Line Drawing Determine zone (z) for the line Covert the endpoints to zone0 Run midpoint line drawing algorithm for zone0 (0<m<1) Determine the point to be plotted Convert back the point to zone z Draw the point

Exercise (Slope Independent Line Drawing) Draw a line from (-2,-5) to (-9,-20) 1. dx=? dy=? z=? 2. Convert to z=0. x0= y0= x1= y1= 3. P=2dy-dx; P1=2dy; P2=2dy-2dx; while(x0<x1) If(p<0) P+=P1; Else P+=P2; Y++; X++; 4.Convert to z=z. x2= y2= 5.Plot (x2,y2)

Practice (-7,2),(8,14) (6,-2),(4,-5) (-1,8),(5,9) (-9,-5),(9,-3)

QUIZ!!! QUIZ

A Simple Circle Drawing Algorithm The equation for a circle is: 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:

A Simple Circle Drawing Algorithm (cont…)

A Simple Circle Drawing Algorithm (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

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) (y, x) (y, -x) (x, -y) (-x, -y) (-y, -x) (-y, x) (-x, y)

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 only ever calculate the points for the top right eighth of a circle, and then use symmetry to get the rest of the points The mid-point circle algorithm was developed by Jack Bresenham, who we heard about earlier. Bresenham’s patent for the algorithm can be viewed here.

Mid-Point Circle Algorithm (cont…) Assume that we have just plotted point (xk, yk) The next point is a choice between (xk+1, yk) 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? (xk+1, yk) (xk+1, yk-1) (xk, yk)

Mid-Point Circle Algorithm (cont…) Let’s re-jig the equation of the circle slightly to give us: The equation evaluates as follows: By evaluating this function at the midpoint between the candidate pixels we can make our decision

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: 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

Mid-Point Circle Algorithm (cont…) To ensure things are as efficient as possible we can do all of our calculations incrementally First consider: or: where yk+1 is either yk or yk-1 depending on the sign of pk

Mid-Point Circle Algorithm (cont…) The first decision variable is given as: Then if pk < 0 then the next decision variable is given as: If pk > 0 then the decision variable is:

The 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: Calculate the initial value of the decision parameter as: 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:

The Mid-Point Circle Algorithm (cont…) Otherwise the next point along the circle is (xk+1, yk-1) and: Determine symmetry points in the other seven octants Move each calculated pixel position (x, y) onto the circular path centred at (xc, yc) to plot the coordinate values: Repeat steps 3 to 5 until x >= y

Mid-Point Circle Algorithm Example draw a circle centred at (0,0) with radius 10 r=? y=r, x=0, p=5/4-r or 1-r while (x<=y){ If(p<0) P+=2x+1 Else P+=-2y+2x+1 Y--; X++; } 3. Draw points at (x,y), (y,x),(-x,y),(-y,x),(-x,-y),(-y,-x),(y,-x),(x,-y)

Mid-Point Circle Algorithm Example (cont…) 9 7 6 5 4 3 2 1 8 10 k pk (xk+1,yk+1) 2xk+1 2yk+1 1 2 3 4 5 6

Mid-Point Circle Algorithm Exercise Use the mid-point circle algorithm to draw the circle centred at (2,-5) with radius 15 Hint: Instead of (x,y) draw point at (x+xc,y+yc) =~(x+2,y+(-5)). What about the other 7 points?

Mid-Point Circle Algorithm Example (cont…) 9 7 6 5 4 3 2 1 8 10 13 12 11 14 15 16 k pk (xk+1,yk+1) 2xk+1 2yk+1 1 2 3 4 5 6 7 8 9 10 11 12

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

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

Mid-Point Circle Algorithm (cont…) 6 2 3 4 1 5

Mid-Point Circle Algorithm (cont…) 6 2 3 4 1 5

Mid-Point Circle Algorithm (cont…) 6 2 3 4 1 5

Blank Grid

Blank Grid

Blank Grid 9 7 6 5 4 3 2 1 8 10

Blank Grid