cg lecture 6
Post on 04-Apr-2018
215 Views
Preview:
TRANSCRIPT
-
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
top related