24
David Luebke 06/16/22 CS 551 / 645: Introductory Computer Graphics David Luebke [email protected] http://www.cs.virginia.edu/~cs551

CS 551 / 645: Introductory Computer Graphics

Embed Size (px)

DESCRIPTION

CS 551 / 645: Introductory Computer Graphics. David Luebke [email protected] http://www.cs.virginia.edu/~cs551. Administrivia. Office hours: Luebke: 2:30 - 3:30 Monday, Wednesday Olsson 219 Dale / Jinze / Derek: 3 - 4 Tuesday 2 - 3 Thursday 2 - 3 Friday Small Hall Unixlab for now - PowerPoint PPT Presentation

Citation preview

Page 1: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

CS 551 / 645: Introductory Computer Graphics

David Luebke

[email protected]

http://www.cs.virginia.edu/~cs551

Page 2: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Administrivia

Office hours:– Luebke:

2:30 - 3:30 Monday, Wednesday Olsson 219

– Dale / Jinze / Derek: 3 - 4 Tuesday 2 - 3 Thursday 2 - 3 Friday Small Hall Unixlab for now Might move to Olsson 227 later

Assignment 1 postponed till Wednesday

Page 3: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

UNIX Section: 4 PM, Olsson 228

Optional UNIX section led by Dale today– Getting around– Using make and makefiles– Using gdb (if time)

We will use 2 libraries: OpenGL and Xforms– OpenGL native on SGIs; on other platforms Mesa– Xforms: available on all platforms of interest

Page 4: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

XForms Intro

Xforms: a toolkit for easily building Graphical User Interfaces, or GUIs– See http://bragg.phys.uwm.edu/xforms– Lots of widgets: buttons, sliders, menus, etc.– Plus, an OpenGL canvas widget that gives us a

viewport or context to draw into with GL or Mesa.

Quick tour now You’ll learn the details yourself in

Assignment 1

Page 5: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Mathematical Foundations

FvD appendix gives good review I’ll give a brief, informal review of some of the

mathematical tools we’ll employ– Geometry (2D, 3D)– Trigonometry– Vector and affine spaces

Points, vectors, and coordinates

– Dot and cross products– Linear transforms and matrices

Page 6: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

2D Geometry

Know your high-school geometry:– Total angle around a circle is 360° or 2π radians– When two lines cross:

Opposite angles are equivalent Angles along line sum to 180°

– Similar triangles: All corresponding angles are equivalent Corresponding pairs of sides have the same length ratio

and are separated by equivalent angles Any corresponding pairs of sides have same length ratio

Page 7: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Trigonometry

Sine: “opposite over hypotenuse” Cosine: “adjacent over hypotenuse” Tangent: “opposite over adjacent” Unit circle definitions:

– sin () = x– cos () = y– tan () = x/y– Etc…

(x, y)

Page 8: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

3D Geometry

To model, animate, and render 3D scenes, we must specify:– Location– Displacement from arbitrary locations– Orientation

We’ll look at two types of spaces:– Vector spaces– Affine spaces

We will often be sloppy about the distinction

Page 9: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Vector Spaces

Two types of elements:– Scalars (real numbers): … – Vectors (n-tuples): u, v, w, …

Supports two operations:– Addition operation u + v, with:

Identity 0 v + 0 = v Inverse - v + (-v) = 0

– Scalar multiplication: Distributive rule:(u + v) = (u) + (v)

( + )u = u + u

Page 10: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Vector Spaces

A linear combination of vectors results in a new vector:

v = 1v1 + 2v2 + … + nvn

If the only set of scalars such that

1v1 + 2v2 + … + nvn = 0

is 1 = 2 = … = 3 = 0

then we say the vectors are linearly independent The dimension of a space is the greatest number of linearly

independent vectors possible in a vector set For a vector space of dimension n, any set of n linearly

independent vectors form a basis

Page 11: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Vector Spaces: A Familiar Example Our common notion of vectors in a 2D plane

is (you guessed it) a vector space:– Vectors are “arrows” rooted at the origin– Scalar multiplication “streches” the arrow, changing

its length (magnitude) but not its direction– Addition uses the “trapezoid rule”:

u+vy

xu

v

Page 12: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Vector Spaces: Basis Vectors

Given a basis for a vector space:– Each vector in the space is a unique linear

combination of the basis vectors– The coordinates of a vector are the scalars from

this linear combination– Best-known example: Cartesian coordinates

Draw example on the board

– Note that a given vector v will have different coordinates for different bases

Page 13: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Vectors And Point

We commonly use vectors to represent:– Points in space (i.e., location)– Displacements from point to point– Direction (i.e., orientation)

But we want points and directions to behave differently– Ex: To translate something means to move it

without changing its orientation– Translation of a point = different point– Translation of a direction = same direction

Page 14: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Affine Spaces

To be more rigorous, we need an explicit notion of position

Affine spaces add a third element to vector spaces: points (P, Q, R, …)

Points support these operations– Point-point subtraction: Q - P = v

Result is a vector pointing from P to Q

– Vector-point addition: P + v = Q Result is a new point

– Note that the addition of two points is not defined

P

Q

v

Page 15: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Affine Spaces

Points, like vectors, can be expressed in coordinates– The definition uses an affine combination– Net effect is same: expressing a point in terms of a

basis

Thus the common practice of representing points as vectors with coordinates (see FvD)

Analogous to equating points and integers in C– Be careful to avoid nonsensical operations

Page 16: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Affine Lines: An Aside

Parametric representation of a line with a direction vector d and a point P1 on the line:

P() = Porigin + d

Restricting 0 produces a ray Setting d to P - Q and restricting 0 1

produces a line segment between P and Q

Page 17: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Dot Product

The dot product or, more generally, inner product of two vectors is a scalar:

v1 • v2 = x1x2 + y1y2 + z1z2 (in 3D)

Useful for many purposes– Computing the length of a vector: length(v) = sqrt(v • v)

– Normalizing a vector, making it unit-length– Computing the angle between two vectors:

u • v = |u| |v| cos(θ)

– Checking two vectors for orthogonality– Projecting one vector onto another

θu

v

Page 18: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Cross Product

The cross product or vector product of two vectors is a vector:

The cross product of two vectors is orthogonal to both

Right-hand rule dictates direction of cross product

1221

1221

1221

21 )(

y x y x

z x z x

z y z y

vv

Page 19: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Linear Transformations

A linear transformation: – Maps one vector to another– Preserves linear combinations

Thus behavior of linear transformation is completely determined by what it does to a basis

Turns out any linear transform can be represented by a matrix

Page 20: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Matrices

By convention, matrix element Mrc is located at row r and column c:

By (OpenGL) convention, vectors are columns:

mnm2m1

2n2221

1n1211

MMM

MMM

MMM

M

3

2

v

v

v

v

1

Page 21: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Matrices

Matrix-vector multiplication applies a linear transformation to a vector:

Recall how to do matrix multiplication

z

y

x

v

v

v

MMM

MMM

MMM

vM

333231

232221

131211

Page 22: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Matrix Transformations

A sequence or composition of linear transformations corresponds to the product of the corresponding matrices– Note: the matrices to the right affect vector first– Note: order of matrices matters!

The identity matrix I has no effect in multiplication

Some (not all) matrices have an inverse: vvMM 1

Page 23: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

Page 24: CS 551 / 645:  Introductory Computer Graphics

David Luebke 04/19/23

The End

Next: drawing lines on a raster display Reading: FvD 3.2