Computer Graphics Lecture 3 Line Circle Drawing Computer
- Slides: 31
Computer Graphics Lecture 3 Line & Circle Drawing
Computer Graphics Towards the Ideal Line • We can only do a discrete approximation • Illuminate pixels as close to the true path as possible, consider bi-level display only – Pixels are either lit or not lit
Computer Graphics What is an ideal line • Must appear straight and continuous o – Only possible axis-aligned and 45 lines • Must interpolate both defining end points • Must have uniform density and intensity – Consistent within a line and over all lines – What about antialiasing? • Must be efficient, drawn quickly – Lots of them are required!!!
Computer Graphics Simple Line Based on slope-intercept algorithm from algebra: y = mx + b Simple approach: increment x, solve for y Floating point arithmetic required
Computer Graphics Does it Work? It seems to work okay for lines with a slope of 1 or less, but doesn’t work well for lines with slope greater than 1 – lines become more discontinuous in appearance and we must add more than 1 pixel per column to make it work. Solution? - use symmetry.
Computer Graphics Modify algorithm per octant OR, increment along x-axis if dy<dx else increment along y-axis
Computer Graphics DDA algorithm • DDA = Digital Differential Analyser – finite differences • Treat line as parametric equation in t : Start point End point -
Computer Graphics DDA Algorithm • • Start at t = 0 At each step, increment t by dt Choose appropriate value for dt Ensure no pixels are missed: – Implies: and • Set dt to maximum of dx and dy
Computer Graphics DDA algorithm line(int x 1, int y 1, int x 2, int y 2) { float x, y; int dx = x 2 -x 1, dy = y 2 -y 1; int n = max(abs(dx), abs(dy)); float dt = n, dxdt = dx/dt, dydt = dy/dt; x = x 1; y = y 1; while( n-- ) { point(round(x), round(y)); x += dxdt; y += dydt; } } n - range of t.
Computer Graphics DDA algorithm • Still need a lot of floating point arithmetic. – 2 ‘round’s and 2 adds per pixel. • Is there a simpler way ? • Can we use only integer arithmetic ? – Easier to implement in hardware.
Computer Graphics Observation on lines. while( n-- ) { draw(x, y); move right; if( below line ) move up; }
Computer Graphics Testing for the side of a line. • Need a test to determine which side of a line a pixel lies. • Write the line in implicit form: • If (b<0) F<0 for points above the line, F>0 for points below.
Computer Graphics Testing for the side of a line. • Need to find coefficients a, b, c. • Recall explicit, slope-intercept form : • So:
Computer Graphics Decision variable. Let’s assume dy/dx < 0. 5 (we can use symmetry) Evaluate F at point M Referred to as decision variable NE M E Previous Pixel (xp, yp) Choices for Current pixel Choices for Next pixel
Computer Graphics Decision variable. Evaluate d for next pixel, Depends on whether E or NE Is chosen : If E chosen : But recall : NE M E Previous Pixel (xp, yp) Choices for Current pixel Choices for Next pixel So :
Computer Graphics Decision variable. If NE was chosen : M NE E Previous Pixel (xp, yp) Choices for Current pixel Choices for Next pixel So :
Computer Graphics Summary of mid-point algorithm • Choose between 2 pixels at each step based upon the sign of a decision variable. • Update the decision variable based upon which pixel is chosen. • Start point is simply first endpoint (x 1, y 1). • Need to calculate the initial value for d
Computer Graphics Initial value of d. Start point is (x 1, y 1) But (x 1, y 1) is a point on the line, so F(x 1, y 1) =0 Conventional to multiply by 2 to remove fraction doesn’t effect sign.
Computer Graphics Midpoint algorithm void Midpoint. Line(int x 1, y 1, x 2, y 2) { int dx=x 2 -x 1; int dy=y 2 -y 1; int d=2*dy-dx; int incre. E=2*dy; int incr. NE=2*(dy-dx); x=x 1; y=y 1; Write. Pixel(x, y); while (x < x 2) { if (d<= 0) { d+=incr. E; x++ } else { d+=incr. NE; x++; y++; } Write. Pixel(x, y); } }
Computer Graphics Circle drawing. • Can also use Bresenham to draw circles. • Use 8 -fold symmetry E M SE Previous Pixel Choices for Current pixel Choices for Next pixel
Computer Graphics Circle drawing. • Implicit form for a circle is: • Functions are linear equations in terms of (xp, yp) –Termed point of evaluation
Computer Graphics Summary of line drawing so far. • Explicit form of line – Inefficient, difficult to control. • Parametric form of line. – Express line in terms of parameter t – DDA algorithm • Implicit form of line – Only need to test for ‘side’ of line. – Bresenham algorithm. – Can also draw circles.
Computer Graphics Problems with Bresenham algorithm • Pixels are drawn as a single line unequal line intensity with change in angle. Pixel density = 2. n pixels/mm Can draw lines in darker colours according to line direction. -Better solution : antialiasing ! -(eg. Gupta-Sproull algorithm) Pixel density = n pixels/mm
Computer Graphics Gupta-Sproull algorithm. • Calculate the distance of the line and the pixel center • Adjust the colour according to the distance
Computer Graphics Gupta-Sproull algorithm. Calculate distance using features of mid-point algorithm dy NE M E dx D v Angle =
Computer Graphics Gupta-Sproull algorithm (cont) Recall from the midpoint algorithm: Line to draw NE So yp+1 m For pixel E: So: v D yp xp E xp+1 Q
Computer Graphics Gupta-Sproull algorithm (cont) Line to draw From previous slide: NE yp+1 m From the midpoint computation, y xp So: v D p E xp+1 Q
Computer Graphics Gupta-Sproull algorithm (cont) From the midpoint algorithm, we had the decision variable (remember? ) Line to draw Going back to our previous equation: NE yp+1 m v D yp xp E xp+1 Q
Computer Graphics Gupta-Sproull algorithm (cont) So, And the denominator is constant Since we are blurring the line, we also need to compute the distances to points yp – 1 and yp + 1
Gupta-Sproull algorithm (cont) Computer Graphics If the NE pixel had been chosen:
Computer Graphics Gupta-Sproull algorithm (cont) • Compute midpoint line algorithm, with the following alterations: • At each iteration of the algorithm: – If the E pixel is chosen, set numerator = d + dx – If the NE pixel is chosen, set numerator = d – dx – Update d as in the regular algorithm – Compute D = numerator/denominator – Color the current pixel according to D – Compute Dupper = (2 dx-2 vdx)/denominator – Compute Dlower = (2 dx+2 vdx)/denominator – Color upper and lower accordingly
- Find the decision variable (d) for midpoint algorithm.
- Midpoint ellipse drawing algorithm
- What is the basis of scan conversion of a circle
- Points and lines in computer graphics ppt
- Circle in computer graphics
- Draw line in computer graphics
- What is object lines?
- Computer graphics
- 3d viewing devices in computer graphics ppt
- Scan conversion of ellipse
- 01:640:244 lecture notes - lecture 15: plat, idah, farad
- Scan line polygon fill algorithm
- Equation of line in computer graphics
- Starburst method in computer graphics
- Midpoint subdivision algorithm
- What is miter line
- Line vw and line xy are parallel lines drawing
- Classification of surveying
- Drawing lecture
- Drawing lecture
- Fillet in engineering drawing
- Vertical circle and horizontal circle
- What is the point of tangency in circle j?
- At least inequality sign
- Geometry circles
- Korea
- Isometric circle
- Dimensioning of circle in engineering drawing
- Engineering drawing circle
- Inferior trochoid
- Anya is drawing a circle graph
- Dda circle drawing algorithm