Cg Lecture 6

Embed Size (px)

Citation preview

  • 7/31/2019 Cg Lecture 6

    1/23

    Computer Graphics (CODE: ECS-504)

    Mr. Anil kr, Pandey

    L6 : Point & Line Drawing

  • 7/31/2019 Cg Lecture 6

    2/23

    Introduction

    Computer Graphics & Its application

    Types of computer graphics

    Graphic display : random Scan & Raster Scan display

    Frame buffer and video Controller

    Points & Lines , line Drawing Algorithm

    Circle Generation algorithm

    Mid point circle generation algorithm

    Parallel version of these algorithm

    Unit 1: Point & Line Generation

  • 7/31/2019 Cg Lecture 6

    3/23

    Point

    Graphics programming packages provide functions todescribe a scene in terms of these basic geometricstructures, referred to as output primitives.

    Point plotting is accomplished by converting a singlecoordinate position function furnished by an applicationprogram into appropriate operation for the output devicein use.

    Line drawing is accomplished by calculating intermediate

    position along the line path between to specified endpoint positions.

    An output device is then a random scan display , astraight line can be drawn smoothly form one endpoint tothe other end point.

  • 7/31/2019 Cg Lecture 6

    4/23

    line

    Must appear straight and continuous

    Must interpolate both defining end points

    Must have uniform density and intensity Consistent within a line and over all lines

    Must be efficient, drawn quickly

  • 7/31/2019 Cg Lecture 6

    5/23

    Line

    Based on slope-intercept

    algorithm from algebra:

    y = mx + b

    Simple approach: increment x,

    solve for y

    Floating point arithmetic

    required

  • 7/31/2019 Cg Lecture 6

    6/23

    Continue..

    M =y2-y1 / x2-xy

    b = y1-m.x1

    for any given x interval x along a line , we can compute the

    corresponding y interval y from above equation

    y=mx and x = y/m

    For lines with slope magnitudes m1 , y can be set proportional to asmall horizontal deflection voltage and corresponding vertical

    deflection is then set proportional to x.

    If m=1 smooth line.

  • 7/31/2019 Cg Lecture 6

    7/23

    DDA(Digital Differential Analyser)

    algorithm

    its is based on scan conversion line

    algorithm based on calculating x or y.

    if m < =1 then x=1 and successive y

    value yk+1 = yk+m

    if m >1 then y=1 and successive x value

    xk+1 = xk+1/m

  • 7/31/2019 Cg Lecture 6

    8/23

    DDA Algorithm

    At each step t , increment tby dx and y by dy

    dt

    dyyy

    dt

    dxxx

    oldnew

    oldnew

  • 7/31/2019 Cg Lecture 6

    9/23

    DDA algo.

    1. Start.

    2. Declare variables x,y,x1,y1,x2,y2,k,dx,dy,s,xi,yi and also declaregdriver=DETECT,gmode.

    3. Initialise the graphic mode with the path location in TC folder.

    4. Input the two line end-points and store the left end-points in (x1,y1).

    5. Load (x1,y1) into the frame buffer;that is,plot the first point.put x=x1,y=y1.

    6. Calculate dx=x2-x1 and dy=y2-y1. 7. If abs(dx) > abs(dy), do s=abs(dx).

    8. Otherwise s= abs(dy).

    9. Then xi=dx/s and yi=dy/s.

    10. Start from k=0 and continuing till k

  • 7/31/2019 Cg Lecture 6

    10/23

    DDA algorithm

    line(int x1, int y1, int x2, int y2)

    {

    float x,y;

    int dx = x2-x1, dy = y2-y1;

    int n = max(abs(dx),abs(dy));

    float dt = n, dxdt = dx/dt, dydt = dy/dt;

    x = x1;

    y = y1;

    while( n-- ) {

    point(round(x),round(y));x += dxdt;

    y += dydt;

    }

    }

  • 7/31/2019 Cg Lecture 6

    11/23

    DDA algorithm

    Still need a lot of floating point arithmetic.

    2 rounds and 2 adds per pixel.

    Is there a simpler way ?

    Can we use only integer arithmetic ?

    Easier to implement in hardware.

  • 7/31/2019 Cg Lecture 6

    12/23

    Bresenhams line drawing algorithm

    Bresenhams line drawing algorithm

    Line drawing algorithm

    comparisons

    Circle drawing algorithms

    A simple technique

    The mid-point circle

    algorithmThe algorithm was developed by Jack

    Bresenham, who we heard about earlier.

  • 7/31/2019 Cg Lecture 6

    13/23

    Concept

    Move across thex axis in unit intervals and at each step

    choose between two differenty coordinates

    2 3 4 5

    2

    4

    3

    5 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

    (xk,yk)

    (xk+1,yk)

    (xk+1,yk+1)

  • 7/31/2019 Cg Lecture 6

    14/23

    They coordinate on the mathematical line atxk+1 is:

    Concept: The Bresenham Line

    Algorithm

    At sample positionxk+1 the vertical separations from the

    mathematical line are labelled dupper and dlower

    bxmy k )1(

    yyk

    yk+1

    xk+1

    dlower

    dupp

    er

  • 7/31/2019 Cg Lecture 6

    15/23

    So, dupperand dlowerare given as follows:

    and:

    We can use these to make a simple decision

    about which pixel is closer to the

    mathematical line

    Deriving The Bresenham Line

    Algorithm (cont)

    klower yyd

    kk ybxm

    )1(

    yyd kupper )1(

    bxmy kk )1(1

  • 7/31/2019 Cg Lecture 6

    16/23

    This simple decision is based on the difference between thetwo pixel positions:

    Lets substitute m with y/xwhere x and

    y are the differences between the end-points:

    Deriving The Bresenham Line

    Algorithm (cont)

    122)1(2 byxmdd kkupperlower

    )122)1(2()(

    byxx

    yxddx kkupperlower

    )12(222 bxyyxxy kk

    cyxxy kk 22

  • 7/31/2019 Cg Lecture 6

    17/23

    So, a decision parameterpk for the kthstep along a line is given by:

    The sign of the decision parameterpk is

    the same as that ofdlowerdupper

    Ifpk is negative, then we choose the lowerpixel, otherwise we choose the upper pixel

    Deriving Algorithm (cont)

    cyxxyddxp

    kk

    upperlowerk

    22)(

  • 7/31/2019 Cg Lecture 6

    18/23

    Remember coordinate changes occur

    along thex axis in unit steps so we can do

    everything with integer calculations At step k+1 the decision parameter is given

    as:

    Subtractingpkfrom this we get:

    Deriving The Bresenham Line

    Algorithm (cont)

    cyxxyp kkk 111 22

    )(2)(2111 kkkkkk yyxxxypp

  • 7/31/2019 Cg Lecture 6

    19/23

    But,xk+1 is the same asxk+1 so:

    whereyk+1 - yk is either 0 or 1 depending

    on the sign ofpk

    The first decision parameter p0 isevaluated at (x0, y0) is given as:

    Deriving The Bresenham

    Line Algorithm (cont)

    )(2211 kkkk yyxypp

    xyp 20

  • 7/31/2019 Cg Lecture 6

    20/23

    The Bresenham Line Algorithm

    BRESENHAMS LINE DRAWING ALGORITHM(for |m| < 1.0)

    1. Input the two line end-points, storing the left end-point

    in (x0, y0)

    2. Plot the point (x0, y0)

    3. Calculate the constants x, y, 2y, and (2y - 2x)and get the first value for the decision parameter as:

    4. At eachxkalong the line, starting at k = 0, perform the

    following test. Ifpk< 0, the next point to plot is

    (xk+1, yk) and:

    xyp 20

    ypp kk 21

  • 7/31/2019 Cg Lecture 6

    21/23

    The Bresenham Line Algorithm

    (cont)

    The algorithm and derivation above assumes slopes are

    less than 1. for other slopes we need to adjust the

    algorithm slightly

    Otherwise, the next point to plot is (xk+1, yk+1) and:

    5. Repeat step 4 (x 1) times

    xypp kk 221

  • 7/31/2019 Cg Lecture 6

    22/23

    Example

    Lets have a go at this

    Lets plot the line from (20, 10) to (30, 18)

    First off calculate all of the constants:

    x: 10

    y: 8

    2y: 16 2y - 2x: -4

    Calculate the initial decision parameterp0:

    p0= 2yx = 6

  • 7/31/2019 Cg Lecture 6

    23/23

    Bresenham Example (cont)

    17

    16

    15

    14

    13

    12

    11

    10

    18

    292726252423222120 28 30

    k pk (xk+1,yk+1)

    0

    1

    2

    3

    4

    56

    7

    8

    9