301 views

Uploaded by Kunal

Attribution Non-Commercial (BY-NC)

- Floating Point Addition and Subtraction algorithm
- [Computer Arithmetic Algorithms and Hardware Designs-Oxford University Press (2010)
- Graphics6-BresenhamCirclesAndPolygons
- Final Report
- 2da Practica de Control
- Organized Collection of Data or Information on One or More Subjects
- CS June 2005
- week2-2
- Technothlon_17_Juniors_Solutions.pdf
- AIMP3_MemoryManager_EventLog
- Ieee 754 Notes
- Birt Bi Tool
- Rate Control
- The Patriot Missile Failure
- Round Tree Manor
- Notepad++ Cheat Sheet
- Organizing Engineering Research Papers(45)
- 04-120921225450-phpapp02
- Chapter 03
- Syllabus for FE V1.0

You are on page 1of 13

University of Cantabria

UC-CAGD Group

COMPUTER-AIDED GEOMETRIC DESIGN

AND COMPUTER GRAPHICS:

Andrés Iglesias

e-mail: iglesias@unican.es

Web pages: http://personales.unican.es/iglesias

http://etsiso2.macc.unican.es/~cagd

Line Drawing Algorithms

appear continuous made of pixels

© 2001 Andrés Iglesias. See: http://personales.unican.es/iglesias

Line Drawing Algorithms

We are going to analyze how this process is achieved.

Some useful definitions General requirements

Rasterization: Process of • Straight lines must appear as straight

determining which pixels lines.

provide the best approximation

to a desired line on the screen.

?

? ?

?

• They must start and end accurately

Scan Conversion: Combination • Lines should have constant brightness

of rasterization and generating the along their length

picture in scan line order. •Lines should drawn rapidly

Line Drawing Algorithms

For horizontal, vertical and For any other orientation the choice

45º lines, the choice of is more difficult:

raster elements is obvious.

This lines exhibit constant

brightness along the length:

?

? ?

?

?

? ?

?

Line Drawing Algorithms

Rasterization of straight lines.

? or

? ?

?

appear brighter than the 45º lines.

Compromise:

For fixing so, we would need:

1. Calculation of square roots 1. Calculate only an approximate line

(increasing CPU time) => 2. Use integer arithmetic

2. Multiple brigthness levels 3. Use incremental methods

© 2001 Andrés Iglesias. See: http://personales.unican.es/iglesias

Line Drawing Algorithms

The equation of a straight line is given by: y=m.x+b

1. Start at the pixel for the left-hand x = xl;

endpoint x1

while (x <= xr){

2. Step along the pixels horizontally

until we reach the right-hand end ytrue = m*x + b;

of the line, xr y = Round (ytrue);

PlotPixel (x, y);

3. For each pixel compute the

/* Set the pixel at (x,y) on */

corresponding y value x = x + 1;

4. round this value to the nearest

integer to select the nearest pixel }

This method therefore requires an enormous number of floating-point

multiplications, and is therefore expensive.

Line Drawing Algorithms

Algorithm 2: Digital Differential Analyzer (DDA)

The differential equation of a straight line is given by:

dy = constant ∆ y y2 - y1

or =

dx ∆x x2 - x1

The solution of the finite difference approximation is:

repeated

y2 - y1 addition

yi+1 = yi + ∆y

x2 - x1 1

1

The DDA algorithm runs rather slowly because it requires real

arithmetic (floating-point operations).

Line Drawing Algorithms

DDA algorithm for lines with -1 < m < 1 Example: Third quadrant

x = xl; -8 -7 -6 -5 -4 -3 -2 -1 0

0

ytrue = yl;

while (x <= xr){ -1

ytrue = ytrue + m; -2

y = Round (ytrue);

© 2001 Andrés Iglesias. See: http://personales.unican.es/iglesias

x = x + 1;

-4

}

Switching the roles of x and y when m>1

Gaps occur of x and y using

when m > 1 a unit step in y,

and 1/m for x.

Line Drawing Algorithms

Algorithm 3: Bresenham’s algorithm (1965)

Bresenham, J.E. Algorithm for computer control of a digital plotter, IBM Systems Journal,

January 1965, pp. 25-30.

This algorithm uses only integer arithmetic, and runs significantly faster.

Y

(1,1) Key idea: distance between

(0,1) ? the actual line and the nearest

1/2 ≤ m ≤ 1 grid locations (error).

Plot (1,1) Initialize error:

1/2 e=-1/2

e=e+m

Plot (1,0)

? X

Reinitialize error:

(0,0) (1,0) when e>0

© 2001 Andrés Iglesias. See: http://personales.unican.es/iglesias

Line Drawing Algorithms

Example: m=3/8

If e<0 below

below below above above

else above

Error

0

Reinitialize

error:

e = 1/4 -1

= -3/4

Error: e=e+m

Initial value: e = -1/2+3/8 e = -1/8+3/8 e = -3/4+3/8

e = - 1/2 =-1/8 = 1/4 = -3/8

Line Drawing Algorithms

However, this algorithm does not lead to integer arithmetic. Scaling by: 2* dx

void Bresenham (int xl, int yl, int xr, int yr)

{

int x,y; /* coordinates of pixel being drawn */

int dy, dx;

int ne; /* integer scaled error term */

x = xl; y = yl; /* start at left endpoint */

ie = 2 * dy - dx; /* initialize the error term */

while (x <= xr){ /* pixel-drawing loop */

PlotPixel (x,y); /* draw the pixel */

if (ie > 0) {

y = y + 1;

ne = ne - 2 * dx; /* replaces e = e - 1 */

}

x = x + 1;

ne = ne + 2 * dy; /* replaces e = e + m */

}

}

Line Drawing Algorithms

Bresenham’s algorithm also applies for circles.

Bresenham, J.E. A linear algorithm for incremental digital display of circular arcs

Communications of the ACM, Vol. 20, pp. 100-106, 1977.

the initial octant only

( 0 1

1 0 )

2 Reflect first octant about y=x

quadrant 2 octant

3

about x=0 1

( )

-1 0

0 1

4

4 Reflect upper

semicircle

about y=0

( )

1 0

0 -1

Line Drawing Algorithms

Bresenham’s incremental circle algorithm.

Example:

circle of radius 8 9

Bright pixels: 8

initial pixel (0,8)

7

(1,8)

(2,8) 6

(3,7)

5

(4,7)

(5,6) 4

(6,5)

3

(7,4)

(7,3) 2

(8,2) 1

(8,1)

0

end pixel (8,0) 0 1 2 3 4 5 6 7 8 9

- Floating Point Addition and Subtraction algorithmUploaded byvishnu_dexter2935
- [Computer Arithmetic Algorithms and Hardware Designs-Oxford University Press (2010)Uploaded byduong trung
- Graphics6-BresenhamCirclesAndPolygonsUploaded bySourabh Sharma
- Final ReportUploaded byJana Perumal
- 2da Practica de ControlUploaded byClinton Estacio Gomez
- Organized Collection of Data or Information on One or More SubjectsUploaded byaayola99
- CS June 2005Uploaded byapi-3782519
- week2-2Uploaded byRodrigo Silva
- Technothlon_17_Juniors_Solutions.pdfUploaded bySajjal Rana
- AIMP3_MemoryManager_EventLogUploaded byBahrin Lajana
- Ieee 754 NotesUploaded byMohsin Bhat
- Birt Bi ToolUploaded byManoj Potluri
- Rate ControlUploaded byAlexey Krauze
- The Patriot Missile FailureUploaded byBertaCapdevilaCano
- Round Tree ManorUploaded byMahidhar Surapaneni
- Notepad++ Cheat SheetUploaded bykwanlok.chan
- Organizing Engineering Research Papers(45)Uploaded by柯泰德 (Ted Knoy)
- 04-120921225450-phpapp02Uploaded byZineb Garroussi
- Chapter 03Uploaded byKikyWulanDharie
- Syllabus for FE V1.0Uploaded byChristopher Gorge Marges
- SophosUploaded bySREENI
- 4-2.pdfUploaded byAnonymous gEHEtwrD
- l04-13Uploaded byTuhin mahbub
- Simplex Method MinimizationUploaded byReiniel Cirujano Antonio
- cec4_LEC2Uploaded byfreanne_0527
- Sintak TemanUploaded byoz lombok
- JMPUploaded bySaiful Pratama
- Low Fidelity Mock UpsUploaded byOrlando Torres
- Eoe-073 Operation research 2013-14Uploaded byShubham Choudhary
- hms_maan_2010Uploaded bysuleman_bhutta

- WSRP StandardsAndGuideline-Canal DesignUploaded byNitin S Jog
- The Leadership QuarterlyUploaded bySyahrial Sarafuddin
- JNTUA 2015 1st Year SupplyUploaded bystarpenchal
- resonance dppUploaded bySurya Prakash
- Why Buildings Fall Down How Structures FailUploaded byhessian123
- Tut2Uploaded byLoc Tran
- Solucionario de Problemas de Momento de InerciaUploaded byEsteban Huacasi Vargas
- Maxima MinimaUploaded bymanucperingelil
- Parallel VipUploaded bymohamedezeldin
- IntroductionUploaded byArgel Linard Francisco Mabaga
- Facial Expression Recognition Using Diagonal Crisscross Local Binary PatternUploaded byRahul Sharma
- 9 Math PolynomialsUploaded bygocebuseski
- Exercises Libor Market Model - ICLUploaded bymeko1986
- Bill Gates - The Opportunity AheadUploaded byleaguer4
- deflection of beamsUploaded byChaitanya Kumar
- Snow 3g SpecUploaded byRamesh Srinivasan
- 1.1and1.2notesMTH112Uploaded byg1191059
- Ship waves in Tallinn Bay: Experimental and numerical studyUploaded bybahar1234
- eeesyllUploaded byAswani Kumar E
- Ptolemy, AlmagestUploaded byJuancito Rawson
- Static Behavior of Natural GasUploaded byLemony Snickit
- non-historical-review of literature-4 18 2016Uploaded byapi-316027728
- 2013Uploaded byArpita Paul
- jas2426Uploaded byBhujendra Soni
- BE_I__AND_II_SEM_SCH.SYLABI040314120528 (1)Uploaded byAbhiSharma
- Optimal Decisions Using Marginal AnalysisUploaded byMsKhan0078
- AI 22845Uploaded bysrikaanth3811
- Logistic Regression and ConfoundingUploaded byds532
- Two-Frame Motion Estimation Based on Polynomial ExpansionUploaded byElias Silva
- secret (1)Uploaded bydinudineshbhawnani2916