0% found this document useful (0 votes)
15 views52 pages

Output Primitives

The document discusses output primitives in computer graphics, detailing basic geometric structures and the process of scan conversion to map mathematical points to pixels. It covers algorithms for scan converting lines and circles, including the Digital Differential Analyzer and Bresenham's Line Algorithm, as well as methods for character generation using bitmap and outline fonts. The content emphasizes the importance of efficient pixel representation and the use of symmetry in graphics rendering.

Uploaded by

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

Output Primitives

The document discusses output primitives in computer graphics, detailing basic geometric structures and the process of scan conversion to map mathematical points to pixels. It covers algorithms for scan converting lines and circles, including the Digital Differential Analyzer and Bresenham's Line Algorithm, as well as methods for character generation using bitmap and outline fonts. The content emphasizes the importance of efficient pixel representation and the use of symmetry in graphics rendering.

Uploaded by

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

Output Primitives

Dr. S.M. Malaek


Assistant: M. Younesi
Output Primitives
 Output Primitives: Basic geometric
structures (points, straight line segment,
circles and other conic sections, quadric
surfaces, spline curve and surfaces,
polygon color areas, and character
strings)
 These picture components are often
defined in a continuous space.
Output Primitives
 In order to draw the primitive objects,
one has to first scan convert the object.

 Scan convert: Refers to he operation of


finding out the location of pixels to the
intensified and then setting the values of
corresponding bits, in the graphic
memory, to the desired intensity code.
Output Primitives
 Each pixel on the display surface has
a finite size depending on the screen
resolution and hence a pixel cannot
represent a single mathematical
point.
Scan Converting A Point
Scan Converting A Point
 A mathematical point (x,y) needs to
be scan converted to a pixel at
location (x´, y´).
Scan Converting A Point
 x´=Round(x) and y´=Round(y)
 All points that satisfy: x  x  x  1
are mapped to pixel (x´,y´) y  y  y  1
Scan Converting A Point
 x´=Round(x+0.5) and y´=Round(y+o.5)
 All points that satisfy: x  0.5  x  x  0.5
are mapped to pixel (x´,y´) y  0.5  y  y  0.5
Scan Converting A Line
Scan Converting A Line
 The Cartesian slope- intercept equation
for a straight line is:
y m x  b
y  y
m 2 1

x  x2 1

b  y  m x
1 1

y
y mx x 
m
Scan Converting A Line
 These equation form the basic for
determining deflection voltage in
analog devices.

y mx y
x 
m

|m|<1 |m|>1
Scan Converting A Line
 On raster system, lines are plotted
with pixels, and step size (horizontal
& vertical direction) are constrained
by pixel separation.
Scan Converting A Line
 We must sample a line at discrete
positions and determine the
nearest pixel to the line at each
sampled position.
Digital Differential
Analyzer
(DDA Algorithm)
DDA Algorithm
 Algorithm is an incremental scan
conversion method.
 Based on calculating either x or y
 If |m|<1,(x 1)
y mx
y y  m
K 1 k
DDA Algorithm
 If |m|>1, (y 1)
y
x 
m
1
x x 
m
K 1 k

If (x  1)
y mx
y K 1
y  m
k
Bresenham’s Line
Algorithm
Bresenham’s Line Algorithm
 A highly efficient incremental
method for scan converting lines.
 Using only incremental integer
calculation.
By testing the sign of an
integer parameter, whose
value is proportional to the
difference between the
separation of two pixel
positions from the actual
line path.
Bresenham’s Line Algorithm
 A highly efficient incremental
method for scan converting lines.
 Using only incremental integer
calculation.
By testing the sign of an
integer parameter, whose
value is proportional to the
difference between the
separation of two pixel
positions from the actual
line path.
Bresenham’s Line Algorithm
Bresenham’s Line Algorithm
Bresenham’s Line Algorithm

yk+1
} d2
y
}d 1

yk

xk+1
Bresenham’s Line Algorithm
d1 = y - yk = m (xk + 1) + b - yk

d2 = (yk + 1) - y = yk + 1 - m (xk + 1) –b

d1 - d2 = 2 m (xk + 1) - 2 yk + 2b -1
Bresenham’s Line Algorithm

Pk = ΔX ( d1 - d2) =
2 ΔY . xk - 2 ΔX . yk + c

c = constante = 2 ΔY + ΔX (2b -1)


Let's get rid of multiplications
Pk+1 = 2 ΔY . xk+1 - 2 ΔX .y + c
Pk+1 - Pk = 2 ΔY (xk+1 - xk) -2 ΔX (yk+1 - yk)
(get rid of the constance)
Pk+1 = Pk + 2 ΔY - 2 ΔX (yk+1 - yk)

Pk+1 = Pk + 2ΔY
or
= Pk + 2(ΔY – ΔX(

with (yk+1 - yk) = 0 or 1 depending on Pk sign


Bresenham’s Line Algorithm
P0 =ΔX (d1-d2)
=ΔX[2m(x0+1)-2y0+2b-1]
=ΔX[2(mx0+b-y0)+2m-1]
m=Δy/x

0
P0=2ΔY -ΔX
Bresenham’s Line Algorithm
 Example: Digitize the line with endpoint
(20,10) and (30,18) P0=2ΔY –ΔX
ΔX=10 ΔY=
Pk+1 =8Pk + 2ΔY
P0=2ΔY –Δx=6 or
2ΔY =16 = Pk + 2(ΔY – ΔX(
2(ΔY – ΔX)=-4
Circle Generation
Algorithms
Circle Generation Algorithms
 The equation of a circle:

We could solve for y in terms of


x
Circle Generation Algorithms
 Computation can be reduced by
considering the symmetry of circles

8 -Way symmetry
Midpoint Circle
Algorithm
Circle Generation Algorithms
 As in the line algorithm, we sample at
unit intervals and determine the closet
pixel position to the circle path at each
step.
Circle Generation Algorithms
 Points are generated from 90º to 45º, moves
will be made only in the +x and –y
direction.
 positive x direction over this octant and use
a decision parameter
Circle Generation Algorithms
 We define a circle function:
 0

f circle
( x, y ) x  y  r 0
2 2 2

 o

Circle Generation Algorithms
 Midpoint 1
( x  1, y  )
2
i i

 Consider the coordinates of the point


halfway between pixel T and pixel S

Midpoint
Circle Generation Algorithms

 We use it to define a decision


parameter
1 1
p  f ( x  1, y  ) ( x 1)  ( y  )  r
2 2 2

2 2
i i i i
Circle Generation Algorithms
 If pi  0 is negative, the midpoint
is inside the pixel, and we choose
pixel T.
 If pi 0 we choose pixel S.
Circle Generation Algorithms
 Parameter for the next step is:
1
p ( x  1)  ( y  )  r
2 2

2
i 1 i 1 i 1

 since
x x  1
i 1 i
Circle Generation Algorithms
 If T is chosen ( pi  0 ) we have:

 If pixel S is chosen ( pi 0 ) we
have
Circle Generation Algorithms

In terms of
Circle Generation Algorithms
Initial value for the decision parameter using the
original function of (0,r(

When r is an integer we can simply set


Circle Generation Algorithms
 Example: A circle radius r=10
 x=0 to x=y
 P0=1-r = -9
?
Exercises
1. Scan Converting Arcs
And Sectors?
Character Generation
Character Generation
Letters, numbers, and other character can
be displayed in a variety of size and
styles.
Character Generation
• Typeface: The overall design
style for a set of characters is call
typeface: Zar, nazanin, Titr.

 Font: Referred to a set of cast


metal character forms in a particular
size and forma: 10 point Zar.
Character Generation
 Two different representation are used
for storing computer fonts:

1. Bitmap font (or bitmapped font)

2. Outline font
Bitmap font
 Bitmap font (or bitmapped font): A
simple method for representing the
character shapes in a particular typeface
is to use rectangular grid pattern.
Bitmap font
 The character grid only need to be
mapped to a frame buffer position.
 Bitmap fonts required more space,
because each variation (size and format)
must be stored in a font cash.

Bold Italic
Outline Font
 Graphic primitives such as lines and arcs
are used to define the outline of each
character.
 Require less storage since variation does
not require a distinct font cash.
Outline Font
 We can produce boldface, italic, or
different size by manipulating the curve
definition for the character outlines.

 It does take more time to process the


outline fonts, because they must be scan
converted into frame buffer.

You might also like