Bresenham’s Midpoint Algorithm

1 / 70

Bresenham’s Midpoint Algorithm - PowerPoint PPT Presentation

Bresenham’s Midpoint Algorithm. CS5600 Computer Graphics Rich Riesenfeld Spring 2006. Lecture Set 1. Line Characterizations. Explicit: Implicit: Constant slope: Constant derivative: . Line Characterizations - 2. Parametric: where , Intersection of 2 planes

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

PowerPoint Slideshow about 'Bresenham’s Midpoint Algorithm' - margie

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Bresenham’s Midpoint Algorithm

CS5600Computer Graphics

Rich Riesenfeld

Spring 2006

Lecture Set 1

Line Characterizations
• Explicit:
• Implicit:
• Constant slope:
• Constant derivative:

CS 5600

Line Characterizations - 2
• Parametric:

where,

• Intersection of 2 planes
• Shortest path between 2 points
• Convex hull of 2 discrete points

CS 5600

Discrete Lines
• Lines vs. Line Segments
• What is a discrete line segment?
• This is a relatively recent problem
• How to generate a discrete line?

CS 5600

“Good” Discrete Line - 1
• No gaps in adjacent pixels
• Pixels close to ideal line
• Consistent choices; same pixels in same situations

CS 5600

“Good” Discrete Line - 2
• Smooth looking
• Even brightness in all orientations
• Same line for as for
• Double pixels stacked up?

CS 5600

Incremental Fn Eval
• Recall
• Characteristics
• Fast
• Cumulative Error
• Need to define

CS 5600

Case 0: Trivial Situations
• Do not need Bresenham

CS 5600

Case 1: Translate to Origin
• Need only consider lines emanating from the origin.

CS 5600

Restricted Form
• Line segment in first octant with

0 < m < 1

• Let us proceed

CS 5600

Two Line Equations
• Explicit:
• Implicit:

Define:

Hence,

CS 5600

From previous

We have,

Hence,

CS 5600

Relating Explicit to Implicit Eq’s

Recall,

Or,

where,

CS 5600

Verify that

Look at extreme values of y

Investigate Sign ofF

below line

on line

above line

CS 5600

The Picture

above line

below line

CS 5600

“Reasonable assumptions” have reduced the problem to making a binary choice at each pixel:Key to Bresenham Algorithm

NE (next)

E (next)

(Previous)

CS 5600

Define a logical decision variable d

linear in form

tells us whether to go E or NE

Decision Variable d(logical)

CS 5600

The Picture

NE

Q

midpoint

M

idealline

previous

E

CS 5600

The Picture (again)

NE

Q

midpoint

M

idealline

E

previous

CS 5600

Observe the relationships
• Suppose Q is above M, as before.
• Then , M is below the line
• So, means line is above M,
• Need to move NE, increasey value

CS 5600

The Picture (again)

NE

midpoint

Q

idealline

E

previous

CS 5600

Observe the relationships
• Suppose Q is below M, as before.
• Then F(M) < 0 , implies M is above the line
• So, F(M) < 0 , means line is below M,
• Need to move to E; don’t increasey

CS 5600

M= Midpoint = :
• Want to evaluate at M
• Will use an incr decision var d
• Let,

CS 5600

How will d be used?

Recall,

Therefore,

CS 5600

...

Case 1: Suppose E is chosen

CS 5600

Summary
• At each step of the procedure, we must choose between moving E or NE based on the sign of the decision variable d
• Then update according to

CS 5600

What is initial value of d ?
• First point is
• First midpoint is
• What is initial midpoint value?

CS 5600

What Does “2 x ” Do ?
• Has the same 0-set
• Changes the slope of the plane
• Rotates plane about the 0-set line

CS 5600

More Summary
• Initial value
• Case 1:
• Case 2:

CS 5600

More Summary

Choose

CS 5600

Example
• Line end points:
• Deltas:

CS 5600

Graph

13

12 11 10 9 8 7 6

4 5 6 7 8 9 10 11

CS 5600

Example ( dx = 4; dy = 3 )
• Initial value of

CS 5600

Graph

13

12 11 10 9 8 7 6

4 5 6 7 8 9 10 11

CS 5600

Example (dx=4; dy=3)
• Update value of d

CS 5600

Example (dx=4; dy=3) -2
• Update value of d
• Last move was NE, so

2d(6,9) = 2d(y - dy)

= 2(4 - 3) = - 2

d = 2 – 2 = 0  E

CS 5600

Graph

13

12 11 10 9 8 7 6

4 5 6 7 8 9 10 11

CS 5600

Example (dx=4; dy=3 )
• Previous move was E

CS 5600

Graph

13

12 11 10 9 8 7 6

4 5 6 7 8 9 10 11

CS 5600

Example (dx=4; dy=3 )
• Previous move was

CS 5600

Graph

13

12 11 10 9 8 7 6

4 5 6 7 8 9 10 11

CS 5600

Graph

13

12 11 10 9 8 7 6

4 5 6 7 8 9 10 11

CS 5600

Graph

13

12 11 10 9 8 7 6

4 5 6 7 8 9 10 11

CS 5600

More Raster Line Issues
• Fat lines with multiple pixel width
• Symmetric lines
• How should end pt geometry look?
• Generating curves, e.g., circles, etc.
• Jaggies, staircase effect, aliasing...

CS 5600