CS 551 / 645: Introductory Computer Graphics

Preview:

DESCRIPTION

CS 551 / 645: Introductory Computer Graphics. David Luebke cs551@cs.virginia.edu 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

David Luebke 04/19/23

CS 551 / 645: Introductory Computer Graphics

David Luebke

cs551@cs.virginia.edu

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

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

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

David Luebke 04/19/23

David Luebke 04/19/23

The End

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

Recommended