1 cs 430/536 computer graphics i line drawing week 1, lecture 2 david breen, william regli and maxim...

50
1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory Department of Computer Science Drexel University http://gicl.cs.drexel.edu

Upload: harriet-richards

Post on 12-Jan-2016

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

1

CS 430/536Computer Graphics I

Line DrawingWeek 1, Lecture 2

David Breen, William Regli and Maxim Peysakhov

Geometric and Intelligent Computing Laboratory

Department of Computer Science

Drexel Universityhttp://gicl.cs.drexel.edu

Page 2: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

2

Outline

• Math refresher

• Line drawing

• Digital differential analyzer

• Bresenham’s algorithm

• XPM file format

Page 3: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

3

Geometric Preliminaries

• Affine Geometry– Scalars + Points + Vectors and their ops

• Euclidian Geometry– Affine Geometry lacks angles, distance– New op: Inner/Dot product, which gives

• Length, distance, normalization• Angle, Orthogonality, Orthogonal projection

• Projective Geometry

Page 4: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

4

Affine Geometry

• Affine Operations:

• Affine Combinations: 1v1 + 2v2 + … + nvn where v1,v2, …,vn are vectors andExample:

Page 5: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

5

Mathematical Preliminaries

• Vector: an n-tuple of real numbers• Vector Operations

– Vector addition: u + v = w• Commutative,

associative, identity element (0)

– Scalar multiplication: cv

• Note: Vectors and Points are different– Can not add points– Can find the vector between two points

Page 6: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

6

Linear Combinations & Dot Products

• A linear combination of the vectorsv1, v2, … vn is any vector of the form 1v1 + 2v2 + … + nvn

where i is a real number (i.e. a scalar)

• Dot Product:

a real value u1v1 + u2v2 + … + unvn written as

Page 7: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

7

Fun with Dot Products

• Euclidian Distance from (x,y) to (0,0) in general:

which is just:

• This is also the length of vector v: ||v|| or |v|

• Normalization of a vector:• Orthogonal vectors:

Page 8: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

8

Projections & Angles

• Angle between vectors,

• Projection of vectors

Pics/Math courtesy of Dave Mount @ UMD-CP

Page 9: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

9

Matrices and Matrix Operators

• A n-dimensional vector:

• Matrix Operations:– Addition/Subtraction– Identity– Multiplication

• Scalar• Matrix Multiplication

• Implementation issue:Where does the index start?(0 or 1, it’s up to you…)

Page 10: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

10

Matrix Multiplication

• [C] = [A][B] • Sum over rows & columns• Recall: matrix multiplication

is not commutative• Identity Matrix:

1s on diagonal0s everywhere else

Page 11: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

11

Matrix Determinants

• A single real number• Computed recursively• Example:

• Uses: – Find vector ortho to two other vectors– Determine the plane of a polygon

Page 12: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

12

Cross Product

• Given two non-parallel vectors, A and B

• A x B calculates third vector C that is orthogonal to A and B

• A x B = (aybz - azby, azbx - axbz, axby - aybx)

Page 13: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

13

Matrix Transpose & Inverse

• Matrix Transpose:Swap rows and cols:

• Facts about the transpose:

• Matrix Inverse: Given A, find B such thatAB = BA = I BA-1

(only defined for square matrices)

Page 14: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

14

Line Drawing

Page 15: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

15

Scan-Conversion Algorithms

• Scan-Conversion:Computing pixel coordinates for ideal line on 2D raster grid

• Pixels best visualized as circles/dots– Why? Monitor hardware

1994 Foley/VanDam/Finer/Huges/Phillips ICG

Page 16: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

16

Drawing a Line• y = mx + B• m = ∆y / ∆x• Start at leftmost x and increment by 1

∆x = 1

• yi = Round(mxi + B)• This is expensive and inefficient• Since ∆x = 1, yi+1 = yi + ∆y = yi + m

– No more multiplication!

• This leads to an incremental algorithm

Page 17: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

17

Digital Differential Analyzer (DDA)

• If |slope| is less then 1 ∆x = 1 else ∆y = 1

• Check for vertical line m = ∞

• Compute corresponding ∆y (∆x) = m (1/m)

• xk+1 = xk + ∆x• yk+1 = yk + ∆y• Round (x,y) for pixel location • Issue: Would like to avoid

floating point operations1994 Foley/VanDam/Finer/Huges/Phillips ICG

xk+1

∆xxk

yk+1

yk

∆y

Page 18: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

Generalizing DDA

• If |slope| is less than or equal to 1– Ending point should be right of starting

point

• If |slope| is greater than 1– Ending point should be above starting

point

• Vertical line is a special case ∆x = 0

18

Page 19: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

19

Bresenham’s Algorithm

• 1965 @ IBM• Basic Idea:

– Only integer arithmetic

– Incremental

• Consider the implicit equation for a line:

1994 Foley/VanDam/Finer/Huges/Phillips ICG

Page 20: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

20

The Algorithm

Assumptions: 0 ≤ slope ≤ 1

Pre-computed:Pics/Math courtesy of Dave Mount @ UMD-CP

Page 21: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

21

Bresenham’s AlgorithmGiven:implicit line equation:

Let:where r and q are points on the line and

dx ,dy are positive Then:Observe that all of these are integers and: for points above the line

for points below the lineNow…..

Pics/Math courtesy of Dave Mount @ UMD-CP

Page 22: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

22

Bresenham’s Algorithm

• Suppose we just finished – (assume 0 ≤ slope ≤ 1)

other cases symmetric

• Which pixel next?– E or NE

Pics/Math courtesy of Dave Mount @ UMD-CP

MQ

Page 23: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

23

Assume:• Q = exact y value at• y midway between E and NE:

Observe:

If , then pick E

Else pick NE

If , it doesn’t matter

Bresenham’s Algorithm

Pics/Math courtesy of Dave Mount @ UMD-CP

M

Q < M

Q = M

MQ

Page 24: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

24

• Create “modified” implicit function (2x)

• Create a decision variable D to select, where D is the value of f at the midpoint:

Bresenham’s Algorithm

Pics/Math courtesy of Dave Mount @ UMD-CP

M

Page 25: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

25

Bresenham’s Algorithm

• If then M is below the line– NE is the closest pixel

• If then M is above the line– E is the closest pixel

M

Page 26: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

26

Bresenham’s Algorithm

• If then M is below the line– NE is the closest pixel

• If then M is above the line– E is the closest pixel

• Note: because we multiplied by 2x, D is now an integer---which is very good news

• How do we make this incremental??

Page 27: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

• What increment for computing a new D?• Next midpoint is:

• Hence, increment by:27

Case I: When E is next

Pics/Math courtesy of Dave Mount @ UMD-CP

M

Page 28: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

28

Case II: When NE is next

• What increment for computing a new D?• Next midpoint is:

• Hence, increment by:Pics/Math courtesy of Dave Mount @ UMD-CP

M

Page 29: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

29

How to get an initial value for D?

• Suppose we start at:

• Initial midpoint is:

Then:

Pics/Math courtesy of Dave Mount @ UMD-CP

Page 30: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

30

The Algorithm

Assumptions: 0 ≤ slope ≤ 1

Pre-computed:Pics/Math courtesy of Dave Mount @ UMD-CP

Page 31: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

31

Generalize Algorithm

• If qx > rx, swap points

• If slope > 1, always increment y, conditionally increment x

• If -1 <= slope < 0, always increment x, conditionally decrement y

• If slope < -1, always decrement y, conditionally increment x

• Rework D increments

Page 32: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

Generalize Algorithm

• Reflect line into first case

• Calculate pixels

• Reflect pixels back into original orientation

32

Page 33: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

33

Bresenham’s Algorithm: Example

Page 34: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

34

Bresenham’s Algorithm: Example

Page 35: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

35

Bresenham’s Algorithm: Example

Page 36: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

36

Bresenham’s Algorithm: Example

Page 37: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

37

Bresenham’s Algorithm: Example

Page 38: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

38

Bresenham’s Algorithm: Example

Page 39: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

39

Bresenham’s Algorithm: Example

Page 40: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

40

Bresenham’s Algorithm: Example

Page 41: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

41

Bresenham’s Algorithm: Example

Page 42: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

42

Some issues with Bresenham’s Algorithms

• Pixel ‘density’ varies based on slope– straight lines look

darker, more pixels per unit length

– Endpoint order– Line from P1 to P2

should match P2 to P1– Always choose E when

hitting M, regardless of direction

1994 Foley/VanDam/Finer/Huges/Phillips ICG

Page 43: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

44

XPM Format

• Encoded pixels• C code

• ASCII Text file

• Viewable on Unix w/ display

• On Windows with IrfanVIew

• Translate w/ convert

Page 44: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

45

XPM Basics

• X PixelMap (XPM)• Native file format in X Windows• Color cursor and icon bitmaps• Files are actually C source code• Read by compiler instead of viewer• Successor of X BitMap (XBM) B-W format

Page 45: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

46

XPM Supports Color

Page 46: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

47

XPM: Defining Grayscales and Colors

• Each pixel specified by an ASCII char• key describes the context this color

should be used within. You can always use “c” for “color”.

• Colors can be specified:– color name – “# ” followed by the RGB code in hexadecimal

• RGB – 24 bits (2 characters ‘0’ - ‘f’) for each color.

Page 47: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

48

XPM: Specifying Color

Color Name RGB Color

black # 00 00 00

white # ff ff ff

# 80 80 80

red # ff 00 00

green # 00 ff 00

blue # 00 00 ff

Page 48: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

49

XPM Example

• Array of C strings

• The XPM format assumes the origin (0,0) is in the upper left-hand corner.

• First string is “width height ncolors cpp”

• Then you have "ncolors" strings associating characters with colors.

• And last you have "height" strings of "width" * "chars_per_pixel" characters

Page 49: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

51

Programming assignment 1• Input PostScript-like file• Output B/W XPM• Primary I/O formats for the course• Create data structure to hold points and lines

in memory (the world model) • Implement 2D translation, rotation and

scaling of the world model• Implement line drawing and clipping• January 20th• Get started now!

Page 50: 1 CS 430/536 Computer Graphics I Line Drawing Week 1, Lecture 2 David Breen, William Regli and Maxim Peysakhov Geometric and Intelligent Computing Laboratory

52

Questions?

Go to Assignment 1