570 likes | 696 Vues
This lecture explores Bresenham’s Midpoint Algorithm for generating discrete lines in computer graphics. We will discuss key concepts such as explicit and implicit line equations, constant slope, and the nature of discrete line segments. The focus will be on creating "good" discrete lines that minimize gaps and ensure smooth appearance and consistent pixel choices. Practical examples will illustrate the decision-making process using a logical variable that updates incrementally based on specific conditions. This essential algorithm is foundational for rendering lines in graphics applications.
E N D
Bresenham’s Midpoint Algorithm CS5600Computer Graphics Rich Riesenfeld Spring 2006 Lecture Set 1
Line Characterizations • Explicit: • Implicit: • Constant slope: • Constant derivative: 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
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 incrementally updated (with addition) 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 • Recall • ... CS 5600
... Case 1: Suppose E is chosen CS 5600
Recall, Or, where, Review of Explicit to Implicit CS 5600
Case 1: . CS 5600
Case 2: Suppose NE chosen Recall ... CS 5600
Case 2: Suppose NE ... CS 5600
Case 2: . CS 5600
Case 2: . 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 is initial value of d ? CS 5600
What is initial value of d ? Hence, CS 5600
What is initial value of d ? Hence, 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
What is initial value of d ? CS 5600
What is initial value of d ? 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