Top Banner
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
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.

Jan 12, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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