output primitives - sharifae.sharif.edu/~aerocad/output primitives.pdf · 2007-04-17 · output...

55
Output Primitives Dr. S.M. Malaek Assistant: M. Younesi

Upload: others

Post on 07-Apr-2020

22 views

Category:

Documents


0 download

TRANSCRIPT

Output Primitives

Dr. S.M. MalaekAssistant: M. Younesi

Output PrimitivesOutput 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 PrimitivesIn 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 PrimitivesEach pixel on the display surface has a finite size depending on the screen resolution and hence a pixel cannot cannot representrepresent a single mathematical point.

Scan Converting A Point

Scan Converting A PointA mathematical point (x,y) needs to be scan converted to a pixel at location (x´, y´).

Scan Converting A Pointx´=Round(x) and y´=Round(y)All points that satisfy:

are mapped to pixel (x´,y´) 11+′<≤′+′<≤′

yyyxxx

Scan Converting A Pointx´=Round(x+0.5) and y´=Round(y+o.5)All points that satisfy:

are mapped to pixel (x´,y´) 5.05.05.05.0

+′<≤−′+′<≤−′

yyyxxx

Scan Converting A Line

Scan Converting A LineThe Cartesian slope- intercept equationfor a straight line is:

12

12

xxyym

−−

=

bxmy +⋅=

11 xmyb ⋅−=

xmy ∆=∆ myx ∆

=∆

Scan Converting A Line

These equation form the basic for determining deflection voltage in analog devices.

xmy ∆=∆myx ∆

=∆

|m|<1 |m|>1

Scan Converting A LineOn raster system, lines are plotted with pixels, and step size (horizontal & vertical direction) are constrained by pixel separation.

Scan Converting A LineWe must samplesample a line at discretepositions and determine the nearest pixel to the line at each sampled position.

Digital Differential Analyzer

(DDA Algorithm)

DDA AlgorithmAlgorithm is an incremental scan conversion method.Based on calculating either orIf |m|<1,

x∆ y∆)1( =∆x

myyxmy

kK +=∆=∆

+1

DDA AlgorithmIf |m|>1,

)1( −=∆x

)1( =∆y

mxx

myx

kK

11 +=

∆=∆

+

If

myyxmy

kK −=∆=∆

+1

Bresenham’s Line Algorithm

Bresenham’s Line AlgorithmA highly efficient incrementalmethod for scan converting lines.Using only incremental integercalculation.

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 AlgorithmA highly efficient incrementalmethod for scan converting lines.Using only incremental integercalculation.

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

y

yk

yk+1

xk+1

}}

d2

d1

Bresenham’s Line Algorithm

y

yk

yk+1

xk+1

}}

d2

d1

y

yk

yk+1

xk+1

}}

d2

d1

Bresenham’s Line Algorithmd1 = 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 multiplicationsPk+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

P0 =∆X (d1-d2)=∆X[2m(x0+1)-2y0+2b-1]=∆X[2(mx0+b-y0)+2m-1]

P0=2∆Y -∆X0

m=∆y/x

Bresenham’s Line Algorithm

Bresenham’s Line AlgorithmExample: Digitize the line with endpoint (20,10) and (30,18)

∆X=10 ∆Y= 8P0=2∆Y –∆x=6 2∆Y =162(∆Y – ∆X)=-4

P0=2∆Y –∆XPk+1 = Pk + 2∆Y

or = Pk + 2(∆Y – ∆X)

Circle Generation Algorithms

Circle Generation AlgorithmsThe equation of a circle:

We could solve for y in terms of x

Circle Generation Algorithms

The spacing between plotted pixel positions is not uniform.

Circle Generation AlgorithmsComputation can be reduced by considering the symmetry of circles

8 -Way symmetry

Midpoint Circle Algorithm

Circle Generation AlgorithmsAs in the line algorithm, we sample at unit intervals and determine the closet pixel position to the circle path at each step.

Circle Generation AlgorithmsPoints 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:

⎪⎩

⎪⎨

>=<

−+=o

ryxyxfcircle 00

),( 222

Circle Generation AlgorithmsMidpoint

Consider the coordinates of the point halfway between pixel T and pixel S

)21,1( −+ ii yx

Midpoint

Circle Generation Algorithms

We use it to define a decision parameter

222 )21()1()

21,1( ryxyxfp iiii −−++=−+=

Circle Generation AlgorithmsIf is negative, the midpoint is inside the pixel, and we choose pixel T.If we choose pixel S.0≥ip

0<ip

Circle Generation AlgorithmsParameter for the next step is:

since

2

1

2

11 )21()1( ryxp iii −−++=

+++

11 +=+ ii xx

Circle Generation Algorithms

If T is chosen ( ) we have:

If pixel S is chosen ( ) we have

0<ip

0≥ip

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

Circle Generation Algorithmsint x = 0;int y = radius; int p = 1 - radius;circlePoints(xCenter, yCenter, x, y, pix);while (x < y) {x++;if (p < 0) {p += 2*x+1;} else {y--;p += 2*(x-y+1);}circlePoints(xCenter, yCenter, x, y, pix);}

Circle Generation AlgorithmsExample: A circle radius r=10x=0 to x=yP0=1-r = -9

ExercisesExercises

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 GenerationTwo different representation are used for storing computer fonts:

1. Bitmap font (or bitmapped font)

2. Outline font

Bitmap fontBitmap font (or bitmapped font): A simple method for representing the character shapes in a particular typeface is to use rectangular grid pattern.

Bitmap fontThe 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 FontGraphic 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 FontWe 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.