chapter2 (2)
chapter2 (2)
GRAPHICS PRIMITIVES
A primitive Objects
2
5
pixels
6
Points
x,y
•Lines
Two points
Draw by drawing all points in between
9
Point Drawing in
OpenGL
Line Drawing
Algorithms
Circle Drawing
Algorithms
Fill-Area Primitives
Point Drawing in
OpenGL
Line Drawing
Algorithms
Circle Drawing
Algorithms
Fill-Area Primitives
m
yend y0 c y mx
xend x0 δy = m.δx
0 0
δx = (1/m).δy
Computer Graphics- Computer science- EIT-M
16
Digital Differential Analyzer Algorithm
Given (x0,y0) and (xend,yend)
Point Drawing in Compute m
OpenGL If |m| ≤ 1:
δx = 1
Line Drawing δy = m
DDA Algorithm δy = 1
Paint (x0,y0)
Find successive pixel positions
Bresenham’s
xk+1 = (xk + δx)
Algorithm
yk+1 = (yk + δy)
Fill-Area Primitives
Point Drawing in
Given (x0,y0) = (10,10)
m
yend y0 (13 10) 3 0.6
OpenGL
and (xend,yend) = (15,13)
xend x0 (15 10) 5
Compute m
Line Drawing If |m| ≤ 1:
Algorithms δx = 1
δx = 1
δy = m δy = 0.6
If |m| > 1:
DDA Algorithm
δx = 1/m
δy = 1
Bresenham’s Paint (x0,y0) (xend,yend) = (15,13)
Algorithm
Circle Drawing
Algorithms
Point Drawing in
Given (x0,y0) = (10,10)
m
yend y0 (13 10) 3 0.6
OpenGL
and (xend,yend) = (15,13)
xend x0 (15 10) 5
Compute m
Line Drawing If |m| ≤ 1:
Algorithms δx = 1
δx = 1
δy = m δy = 0.6
If |m| > 1:
DDA Algorithm
δx = 1/m
δy = 1
Bresenham’s Paint (x0,y0) (xend,yend) = (15,13)
Algorithm
Circle Drawing
Algorithms
Circle Drawing
Algorithms
Circle Drawing
Algorithms
Circle Drawing
Algorithms
Circle Drawing
Algorithms
Circle Drawing
Algorithms
|m| < 1
Point Drawing in
OpenGL Plot (x0,y0)
Compute the first
Line Drawing decision variable:
Algorithms p0 2y x
For each k, starting with
DDA Algorithm k=0:
If pk < 0:
DDA Algorithm
Circle Drawing
Algorithms
Circle Drawing
Algorithms
#include<graphics.h>
int main()
{
initwindow(700,500,"Olompyc");
setcolor(YELLOW);
circle(80,100,50);
setcolor(RED);
circle(160,130,50);
setcolor(BLUE);
circle(240,100,50);
setcolor(RED);
circle(320,130,50);
setcolor(YELLOW);
circle(400,100,50);
getch();
}
Line Drawing
Algorithms
Circle Drawing
Algorithms
Basic Algorithms
Midpoint
Algorithms
Fill-Area Primitives
y yc r 2 xc x
2
Line Drawing
Algorithms 2. Plotting Points Using Polar Coordinates
Circle Drawing r will be constant and only changing θ
Algorithms Compute x and y
x xc r cos y yc r sin
Basic Algorithms
More efficient than
Midpoint Cartesian one
Algorithms Even more efficient
with a little cost in
Fill-Area Primitives quality
Line Drawing
Algorithms
Circle Drawing
Algorithms
Basic Algorithms
Circle Drawing P = -9
Algorithms
Basic Algorithms
Midpoint
Algorithms
Fill-Area Primitives
(0,0)
Circle Drawing p0 = -9
Algorithms
Basic Algorithms
Midpoint
Algorithms
Fill-Area Primitives
(0,0)
Circle Drawing p1 = -6
Algorithms
Basic Algorithms
Midpoint
Algorithms
Fill-Area Primitives
(0,0)
Circle Drawing p2 = -1
Algorithms
Basic Algorithms
Midpoint
Algorithms
Fill-Area Primitives
(0,0)
Circle Drawing p3 = 6
Algorithms
Basic Algorithms
Midpoint
Algorithms
Fill-Area Primitives
(0,0)
Circle Drawing p4 = -3
Algorithms
Basic Algorithms
Midpoint
Algorithms
Fill-Area Primitives
(0,0)
Circle Drawing p5 = 8
Algorithms
Basic Algorithms
Midpoint
Algorithms
Fill-Area Primitives
(0,0)
Circle Drawing p6 = 5
Algorithms
Basic Algorithms
Midpoint
Algorithms
Fill-Area Primitives
(0,0)
Circle Drawing p7 = 6
Algorithms
Basic Algorithms
Midpoint
Algorithms
Fill-Area Primitives
(0,0)
Line Drawing
Algorithms (10,10)
Circle Drawing p8 = 11
Algorithms
Basic Algorithms
Midpoint
Algorithms
Fill-Area Primitives
(0,0)
Polygons
Polygon
Representation
Polygon Normal
Vectors
OpenGL Fill-Area
Functions glRecti(200,100,50,250);
OpenGL Fill-Area
Functions
OpenGL Fill-Area
Functions
OpenGL Fill-Area
Functions
glBegin(GL_TRIANGLE_FAN);
Polygons glVertex2iv(p1);
glVertex2iv(p2);
glVertex2iv(p3); The first point of the first
Polygon
glVertex2iv(p4); triangle is the beginning
Representation
glVertex2iv(p5); of the fan. points are
glVertex2iv(p6); given in anti-clockwise
Polygon Normal glEnd();
Vectors
OpenGL Fill-Area
Functions
glBegin(GL_QUAD_STRIP);
Polygons glVertex2iv(p1);
glVertex2iv(p2);
glVertex2iv(p3); The first quadrilateral
Polygon glVertex2iv(p4);
Representation points are given in anti-
glVertex2iv(p5); clockwise
glVertex2iv(p6);
Polygon Normal glVertex2iv(p7);
Vectors glVertex2iv(p8);
glEnd();
OpenGL Fill-Area
Functions