0% found this document useful (0 votes)
47 views24 pages

Computer Graphics (CSE 4103)

The document discusses algorithms for drawing basic 2D primitives like lines, circles, and ellipses using rasterization. It describes the midpoint line drawing algorithm and how it can be extended to draw circles and ellipses. For circles, it explains how to use the midpoint algorithm to iteratively select pixels around the circumference based on calculating the distance from the midpoint to the circle edge. For ellipses, it explains how to divide the drawing into regions and modify the midpoint distance calculation based on the ellipse equation and gradient vector to iteratively select pixels along the ellipse curve.

Uploaded by

Atik Israk Lemon
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
47 views24 pages

Computer Graphics (CSE 4103)

The document discusses algorithms for drawing basic 2D primitives like lines, circles, and ellipses using rasterization. It describes the midpoint line drawing algorithm and how it can be extended to draw circles and ellipses. For circles, it explains how to use the midpoint algorithm to iteratively select pixels around the circumference based on calculating the distance from the midpoint to the circle edge. For ellipses, it explains how to divide the drawing into regions and modify the midpoint distance calculation based on the ellipse equation and gradient vector to iteratively select pixels along the ellipse curve.

Uploaded by

Atik Israk Lemon
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

Department of Computer Science and Engineering,

Computer Graphics (CSE 4103)

University of Dhaka
Lecture 4-5
Basic Raster Graphics Algorithm for
Drawing 2D Primitives
Line Drawing
Line drawing is fundamental to computer graphics.
We must have fast and efficient line drawing functions.

Rasterization Problem: Given only the two end points, how to


compute the intermediate pixels, so that the set of pixels closely
approximate the ideal line.
Last Class
1. Incremental Line-drawing Algorithm
2. Mid-point Algorithm for Line-drawing
i) In only one Octant
ii) In all 8 octants
iii) 8-way Symmetry
iv) Tangent Independent mid-point line drawing algorithm
This Class
1. Mid-point Algorithm for Drawing Circle
2. Mid-point Algorithm for Drawing Ellipse
Drawing Circle with Mid-point Algorithm
N

Radius = r

r
W a r E

a
Cos 450 = r

r
a=
S
Drawing Circle with Mid-point Algorithm..
N

8-way
Symmetry
(-y, x) (y, x)

(-x, y) (x, y)
W E
(x, -y)
(-x, -y)
(-y, -x) (y, -x)

S
Drawing Circle with Mid-point Algorithm..

(xi, yi) E
N
M

W E
SE

Previous Choices Choices


Pixel for current for next
pixel pixel
Drawing Circle with Mid-point Algorithm..

Equation of a Circle:
(x h)2 + (y k)2=r2
(h, k)= Center of the Circle
r = radius of the circle

Equation of a Circle centered at the origin:


F(x,y) = x2 +y2 r2 = 0
Drawing Circle with Mid-point Algorithm..

E
F(M) = (x+1)2 +(y-1/2)2 r2 = 0
(xi, yi)
M
d (or dold)= (x+1)2 +(y-1/2)2 r2 = 0

SE M
M

Previous Choices Choices


Pixel for current for next
pixel pixel Case 1 Case 2

Condition Explanation Point to Select Resulting y value


If d<0 The point is within the Circle (Case 1) E yi+1 = yi
If d>=0 The point is outside the Circle (Case 2) SE yi+1 = yi -1
Drawing Circle with Mid-point Algorithm..

E
F(M) = (x+1)2 +(y-1/2)2 r2 = 0
(xi, yi)
M
d (or dold)= (x+1)2 +(y-1/2)2 r2 = 0
If(d<0), point (xi+1, yi) is selected
SE
Coordinate of next midpoint is (xi+2, yi-1/2)

dnew1= (x+2)2 +(y-1/2)2 r2 = 0


Previous Choices Choices
Pixel for current for next
pixel pixel
dnew1= dold+ 2xi +3

Condition Explanation Point to Select Resulting y value


If d<0 The point is within the Circle (Case 1) E yi+1 = yi
If d>=0 The point is outside the Circle (Case 2) SE yi+1 = yi -1
Drawing Circle with Mid-point Algorithm..

E
F(M) = (x+1)2 +(y-1/2)2 r2 = 0
(xi, yi)
M
d (or dold)= (x+1)2 +(y-1/2)2 r2 = 0
If(d>=0), point (xi+1, yi-1) is selected
SE
Coordinate of next midpoint is (xi+2, yi-3/2)

dnew2= (x+2)2 +(y-3/2)2 r2 = 0


Previous Choices Choices
Pixel for current for next
pixel pixel
dnew2= dold+ 2xi - 2yi +5

Condition Explanation Point to Select Resulting y value


If d<0 The point is within the Circle (Case 1) E yi+1 = yi
If d>=0 The point is outside the Circle (Case 2) SE yi+1 = yi -1
Drawing Circle with Mid-point Algorithm..

E
F(M) = (x+1)2 +(y-1/2)2 r2 = 0
(xi, yi)
M
F(1, r-1/2) = (1)2 +(r-1/2)2 r2
= 5/4- r
SE

dstart= 5/4-r
Previous
Pixel
Choices Choices
for current for next
dstart= 1-r
pixel pixel
Drawing Circle with Mid-point Algorithm..
void midpointCircle(int r)
{
int x=0, y= r;
int d= 1- r;

while(y>=x)
{
DrawPixels(x, y);
if(d<0)
d+ = 2*x + 3;
else
{
d+ = 2*(x-y) + 5;
y--;
}
x++;
}
}
Drawing Circle with Mid-point Algorithm..

Calculate the decision variables for other 7 octants


Drawing Ellipse with Mid-point Algorithm
N

Tangent
(xi, yi)
E Slope = -1
Gradient Vector
SE
Region - 1
S SE
Region - 2
W E

S
Two 4-way Symmetry
Drawing Ellipse with Mid-point Algorithm
N Equation of Ellipse:

Tangent
(xi, yi)
E Slope = -1
Gradient Vector At the switching point between Region 1 and
SE
Region 2, the slope of the curve is -1
Region - 1
Region - 2 S SE Determining this point is more complex than
E it was for circle.

The vector which is perpendicular tangent of the


curve at that point (P) called Gradient Vector and
defined as:

S
Drawing Ellipse with Mid-point Algorithm
N

Tangent
(xi, yi)
E Slope = -1
Gradient Vector
SE At that point, the gradient vector has a slope of 1,
Region - 1
Region - 2 S SE i.e., when the i and j components are of equal
E magnitude.

In Region 1: The j component of the Gradient is larger than the i component


In Region 2: The i component of the Gradient is larger than the j component

If , at the next midpoint (while calculating points for Region-1), (xp+1, yp-1/2), I
S component of the Gradient is larger than the j component, we switch from
Region-1 to Region-2
Drawing Ellipse with Mid-point Algorithm..
N Decision Variable Calculation for Region-1
F(M) = d (or dold1)= b2(x+1)2 + a2(y-1/2)2-a2b2 = 0
Tangent
(xi, yi)
E Slope = -1
Gradient Vector
SE
Region - 1
SE
Region - 2 S
E If E is selected
dnew11 = b2(x+2)2 + a2(y-1/2)2-a2b2 = 0
dnew11 = dold1+ b2(2x+3)

If SE is selected
dnew12 = b2(x+2)2 + a2(y-3/2)2-a2b2 = 0
S
dnew12 = dold1+ b2(2x+3) + a2(-2y+2)
Drawing Ellipse with Mid-point Algorithm..
N Decision Variable Calculation for Region-2
F(M) = d (or dold2)= b2(x+1/2)2 + a2(y-1)2-a2b2 = 0
Tangent
(xi, yi)
E Slope = -1
Gradient Vector
SE
Region - 1
SE
Region - 2 S
E If S is selected
dnew21 = b2(x+1/2)2 + a2(y-2)2-a2b2 = 0
dnew21 = dold2+ a2(-2y+3)

If SE is selected
dnew22 = b2(x+3/2)2 + a2(y-2)2-a2b2 = 0
S
dnew22 = dold2+ b2(2x+2) + a2(-2y+3)
Drawing Ellipse with Mid-point Algorithm..
N Decision Variable for Initial M (both the Regions)
Region-1
Tangent
(xi, yi)
E Slope = -1 dstart1= F(1, b-1/2 )
Gradient Vector
SE
E
= 1 + a2(b-1/2)2-a2b2
Region - 1
Region - 2 S SE
SE
= b2 - a2b + a2/4
E

Region-2
S SE dstart2= b2(x+1/2)2 + a2(y-1)2 -a2b2

S
Write down the mid-point ellipse drawing
algorithm
Task/ Assignment-1:
Implement Midpoint algorithm for
a) Line drawing ((rollnumber%8+1)th octant)
b) Circle drawing ((rollnumber%8+1)th octant)
c) Ellipse drawing ((rollnumber%4+1)th quadrant)

Hint: Implement the above three algorithms in three main modules (using
different other required modules), then rather than printing the pixel, just
leave the putpixel (x,y)/printpixel(x,y) function empty or simply use printf to
show the (x, y) values. In the first lab, I will introduce you with OpenGL and
then we will plug-in your code in the openGL.
Thank you

You might also like