line characterizations bresenham s midpoint
play

Line Characterizations Bresenhams Midpoint Algorithm y mx B - PDF document

Spring 2013 Line Characterizations Bresenhams Midpoint Algorithm y mx B Explicit: F x y ax by c Implicit: ( , ) 0 CS5600 Computer Graphics Lecture Set 2 y adapted from k


  1. Spring 2013 Line Characterizations Bresenham’s Midpoint   Algorithm y mx B • Explicit:     F x y ax by c • Implicit: ( , ) 0 CS5600 Computer Graphics Lecture Set 2  y  adapted from k • Constant slope:  x Rich Riesenfeld’s slides Spring 2013  )  f x k • Constant derivative: ( Line Characterizations - 2 Two Line Equations      y mx B P t t t • Parametric: P P • Explicit: ( ) ( 1 ) 0 1     F x y ax by c • Implicit: ( , ) 0  1  P P where , P P ( 0 ) ; ( ) 0 1   Define: dy y y • Intersection of 2 planes 1 0   dx x x 1 0 • Shortest path between 2 points  dy    y   x B Hence, • Convex hull of 2 discrete points  dx  Relating Explicit to Implicit Eq’s From previous dy    x y B Recall, 0   dy dx   y   x B We have,  dx      dy x dx y dx B ( ) ( ) ( ) 0 Or,       Hence, dy F x y dy x dx y dx B ( , ) ( ) ( ) ( ) 0    x y B 0 dx     a dy b dx c B dx where, ( ); ( ); ( ) CS5600

  2. Spring 2013 Discrete Lines “Good” Discrete Line • No gaps in adjacent pixels • Lines vs. Line Segments • Pixels close to ideal line • What is a discrete line segment? • Consistent choices; same pixels in same situations – This is a relatively recent problem • Smooth looking • Even brightness in all orientations – How to generate a discrete line? P P P P • Same line for as for 0 1 1 0 • Double pixels stacked up? How to Draw a Line? Derive from Line Equation Y = mX + b 1. Compute slope Y i = mX i + b 2. Start at on point (x o , y o ) X i+1 = X i +  X 3. Increment  x and draw Y i+1 = mX i+1 + b • How to figure this out? Y i+1 = m(X i +  X) + b = mX i + m  X + b = m  X + mX i + b = m  X + Y i Derive from Line Equation What about slope? Y = mX + b m =  y /  x If |y 1 – y 0 | > |x 1 – x 0 | Y i = mX i + b = (y 1 – y 0 ) / (x 1 – x 0 ) increment Y X i+1 = X i +  X  y =  x (y 1 – y 0 ) / (x 1 – x 0 ) Y i+1 = Y i +  Y Y i+1 = mX i+1 + b Y i+1 = m(X i +  X) + b else = Y i +  x (y 1 – y 0 ) / (x 1 – x 0 ) = mX i + m  X + b = m  X + mX i + b = Y i +  X(m) increment X = m  X + Y i CS5600

  3. Spring 2013 Incremental Fn Eval Restricted Form    f x f x x • Recall ( ) ( ) ( )  i i i 1 • Line segment in first octant with • Characteristics 0 < m < 1 – Fast – Cumulative Error • After we derive this, we’ll look at the • Need to define other cases (other octants) f x ( ) o CS 5600 13 Investigate Sign of F The Picture y Verify that    F x y below line ( , ) 0 above line   F x y  ( , ) 0 on line    above line  F x y ( , ) 0 below line Look at extreme values of y x Decision Variable d (logical) Key to Bresenham Algorithm Define a logical decision variable d “Reasonable assumptions” have reduced the problem to making a – linear in form binary choice at each pixel: – incrementally updated (with addition) NE (next) – tells us whether to go E or NE (Previous) E (next) CS5600

  4. Spring 2013 The Picture The Picture (again) x  x p   x y NE ( 1 , 1 ) NE p p   y y 1 p Q Q M M midpoint midpoint 1 ideal line   x y ( 1 , ) ideal line p p 2 E y  y p x  x p y y ( , ) previous ( , ) E 1 p previous p p   x x 1 p The Picture (again) Observe the relationships   x y ( 1 , 1 ) • Suppose Q is above M , as before. NE p p  F M • Then ( ) 0 , M is below the line 1   x y  F M ( 1 , ) means line is above M , ( ) 0 midpoint • So, p p 2 Q ideal line • Need to move NE, increase y value E x  x p y y ( , ) ( 1 , ) p previous p p M = Midpoint = 1   : x y ( , ) 1 Observe the relationships p p 2 • Suppose Q is below M , as before. • Want to evaluate at M • Then F ( M ) < 0 , implies M is above the • Will use an incremental decision variable d line • So, F ( M ) < 0 , means line is below M , 1    d F x y ( , ) 1 p p 2 • Need to move to E; don’t increase y 1      d a x b y c • Let, ( ( ) 1 ) p p 2 CS5600

  5. Spring 2013 How will d be used? Case E: Suppose E is chosen 1      d a x b y c • Recall ( ( )     1  1 ) d a x b y c ( ( ) old p p 1 ) Let, p p 2 2     E x x y y • : ; , 1 Therefore,  1    d F x y • ... ( 2 , ) new p p    NE 0 (midpoint below ideal line) 2     d E     1   0 (midpoint above ideal line) a x b y c ( ( ) 2 ) p p    2 E  0 (arbitrary ) Case E: Suppose E is chosen Review of Explicit to Implicit dy      Recall, x y B 1 0       d d  a x b y c  ( 2 ( ) ) dx new old  p p  2     dy x dx y dx B Or, ( ) ( ) ( ) 0       1  ...  a x b y c  ( 1 ( ) )  p p  2       F x y dy x dx y dx B ( , ) ( ) ( ) ( ) 0   d d a new old     where, a dy b dx c B dx ( ); ( ); ( )   d d a Case E: new old Case NE: Suppose NE chosen . 1      d a x b y c   E ( ( ) Recall 1) increment we add if is chosen. old p p E 2   a So, . But remember that E      NE x x y y and, : ; , 1 1  a dy (from line equations).  3    F M d F x y ( Hence, ( ) is not evaluated explicitly. 2, ) new p p 2   a d E ... We simply add to update for E     3  a x b y c ( 2) ( ) p p 2 CS5600

  6. Spring 2013    d d a b Case NE: . Case NE: Suppose NE new old   d d   new old NE increment that we add if is chosen. NE      a b So, . But remember that 3       a x b y c  NE ( 2 ( ) ) p p      a dy b dx , and (from line equations). 2 ... F M Hence, ( ) is not evaluated explicitly.       1  a x b y c   ( 1 ) ( )    a b d NE  p p  We simply add to update for NE 2    d d a b new old Case NE:    d d a b Summary new old . • At each step of the procedure, we       a b a dy b dx , where , and must choose between moving E or NE NE based on the sign of the    a b means, we simply add , i.e., decision variable d NE    • Then update according to dy dx d NE to update for . NE      d dy  , where , or E E  d        d dy dx  , where NE NE What is initial value of d ? What is initial value of d ? x 0 y 1 1 ( , )        • First point is F x y a x b y c ( , ) ( ( ) 1 1) 0 0 0 0 0 1 2 2   x y ( , ) • First midpoint is 1   b 0 0        2 ax by c a   • What is initial midpoint value? 0 0   2   b    x y a 1 1 F , )   (      d x y F x y ( , ) ( , ) 0 0   1 1 2 0 0 0 0 2 2 CS5600

  7. Spring 2013 What is initial value of d ? What Does Factor of 2 x Do ?  F x y x y Note, ( , ) 0, since ( , ) is on line. • Has the same 0 -set 0 0 0 0     F x y ax by c 2 ( , ) 2 ( ) 0 b Hence, 1      F x y a ( , ) 0 1 • Changes the slope of the plane 0 0 2 2 • Rotates plane about the 0-set line   dx     dy ( ) • Gets rid of the denominator   2 What is initial value of d ? What is initial value of d ? Note, we can clear denominator     F x y ax by c 2 ( , ) 2( ) 0 and not change line, So, first value of 1     F x y dy dx 2 ( 1 , ) 2( )   0 0 d dy dx 2( ) ( ) 2 More Summary More Summary dy  dx • Initial value 2 ( ) ( )      d d dy • Case E: , where 2 ( )   E E E d  if 0     Choose d d • Case NE: ,  NE NE  otherwise    dy dx where 2 {( ) ( )} NE • Note, all deltas are constants CS5600

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend