59
June 27, 2022 1 College of Computer and Information Science, Northeastern University CS G140 Graduate Computer Graphics Prof. Harriet Fell Spring 2007 Lecture 6 – February 26, 2007

CS G140 Graduate Computer Graphics

Embed Size (px)

DESCRIPTION

CS G140 Graduate Computer Graphics. Prof. Harriet Fell Spring 2007 Lecture 6 – February 26, 2007. Today’s Topics. Bezier Curves and Splines --------------------------- Parametric Bicubic Surfaces Quadrics. x 2 + y 2 – R 2 = 0. B. P (t) = t A + (1-t) B. A. Curves. - PowerPoint PPT Presentation

Citation preview

Page 1: CS G140 Graduate Computer Graphics

April 20, 2023 1College of Computer and Information Science, Northeastern University

CS G140Graduate Computer Graphics

Prof. Harriet FellSpring 2007

Lecture 6 – February 26, 2007

Page 2: CS G140 Graduate Computer Graphics

April 20, 2023 2College of Computer and Information Science, Northeastern University

Today’s Topics

• Bezier Curves and Splines

---------------------------

• Parametric Bicubic Surfaces

• Quadrics

Page 3: CS G140 Graduate Computer Graphics

April 20, 2023 3College of Computer and Information Science, Northeastern University

Curves

A curve is the continuous image of an interval in n-space.

Implicit f(x, y) = 0 x2 + y2 – R2 = 0

Parametric (x(t), y(t)) = P(t) P(t) = tA + (1-t)B

A

B

Generative proc (x, y)

Page 4: CS G140 Graduate Computer Graphics

April 20, 2023 4College of Computer and Information Science, Northeastern University

Curve Fitting

We want a curve that passes through control points.

How do we create a good curve?

What makes a good curve?

Page 5: CS G140 Graduate Computer Graphics

April 20, 2023 5College of Computer and Information Science, Northeastern University

Axis Independence

If we rotate the set of control points, we should get the rotated curve.

Page 6: CS G140 Graduate Computer Graphics

Local Control

Page 7: CS G140 Graduate Computer Graphics

April 20, 2023 7College of Computer and Information Science, Northeastern University

Variation Diminishing

Never crosses a straight line more than the polygon crosses it.

Page 8: CS G140 Graduate Computer Graphics

April 20, 2023 8College of Computer and Information Science, Northeastern University

Continuity

C0 continuity C1 continuity C2 continuity

G2 continuity Not C2 continuity

Page 9: CS G140 Graduate Computer Graphics

April 20, 2023 9College of Computer and Information Science, Northeastern University

How do we Fit Curves?

Lagrange Interpolating Polynomial from mathworld

The Lagrange interpolating polynomial is the polynomial of degree n-1 that passes through the n points,

(x1, y1), (x2, y2), …, (xn, yn), and is given by

( ) ( ) ( )( ) ( )

( )( ) ( )( )( ) ( )

( ) ( )( ) ( )( )( )

2 1 31 2

1 2 1 2 1 2 3 2

1

1 1

1

P x

n n

n n

nn

n n

nj

ii j i i j

x x x x x x x x x xy y

x x x x x x x x x x

x x x xy

x x x x

x xy

x x= ≠

− − − − −= + +

− − − − −

− −+

− −

−=

−∑ ∏

L LL

L L

L

L

Page 10: CS G140 Graduate Computer Graphics

April 20, 2023 10College of Computer and Information Science, Northeastern University

Example 1

Page 11: CS G140 Graduate Computer Graphics

April 20, 2023 11College of Computer and Information Science, Northeastern University

Polynomial Fit

P(x) = -.5x(x-2)(x-3)(x-4)

Page 12: CS G140 Graduate Computer Graphics

April 20, 2023 12College of Computer and Information Science, Northeastern University

Piecewise Fit

Pa(x) = 4.1249 x (x - 1.7273)

0 x 1.5

Pb(x) = 5.4 x (x - 1.7273)

1.5 x 2

Pc(x) = 0

2 x 4

Page 13: CS G140 Graduate Computer Graphics

April 20, 2023 13College of Computer and Information Science, Northeastern University

Spline Curves

Page 14: CS G140 Graduate Computer Graphics

April 20, 2023 14College of Computer and Information Science, Northeastern University

Splines and Spline Ducks

Marine Drafting Weights http://www.frets.com/FRETSPages/Luthier/TipsTricks/DraftingWeights/draftweights.html

Page 15: CS G140 Graduate Computer Graphics

April 20, 2023 15College of Computer and Information Science, Northeastern University

Drawing Spline Today (esc)

Page 16: CS G140 Graduate Computer Graphics

April 20, 2023 16College of Computer and Information Science, Northeastern University

Hermite Cubics

p

qDp

DqP(t) = at3 + bt2 +ct +d

P(0) = p

P(1) = q

P'(0) = Dp

P'(1) = Dq

Page 17: CS G140 Graduate Computer Graphics

April 20, 2023 17College of Computer and Information Science, Northeastern University

Hermite Coefficients

( ) 3 2 1

a

bt t t t

c

d

⎡ ⎤⎢ ⎥⎢ ⎥⎡ ⎤= ⎣ ⎦⎢ ⎥⎢ ⎥⎣ ⎦

P

P(t) = at3 + bt2 +ct +d

P(0) = p

P(1) = q

P'(0) = Dp

P'(1) = Dq( ) 23 2 1 0

a

bt t t

c

d

⎡ ⎤⎢ ⎥⎢ ⎥⎡ ⎤= ⎣ ⎦⎢ ⎥⎢ ⎥⎣ ⎦

P'

For each coordinate, we have 4 linear equations in 4 unknowns

Page 18: CS G140 Graduate Computer Graphics

April 20, 2023 18College of Computer and Information Science, Northeastern University

Boundary Constraint Matrix

0 0 0 1

1 1 1 1

0 0 1 0

3 2 1 0

a

b

c

d

⎡ ⎤ ⎡ ⎤⎡ ⎤⎢ ⎥ ⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ ⎥⎢ ⎥=⎢ ⎥ ⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ ⎥⎢ ⎥⎣ ⎦ ⎣ ⎦⎣ ⎦

pqDpDq

( ) 3 2 1

a

bt t t t

c

d

⎡ ⎤⎢ ⎥⎢ ⎥⎡ ⎤= ⎣ ⎦⎢ ⎥⎢ ⎥⎣ ⎦

P

( ) 23 2 1 0

a

bt t t

c

d

⎡ ⎤⎢ ⎥⎢ ⎥⎡ ⎤= ⎣ ⎦⎢ ⎥⎢ ⎥⎣ ⎦

P'

Page 19: CS G140 Graduate Computer Graphics

April 20, 2023 19College of Computer and Information Science, Northeastern University

Hermite Matrix

2 2 1 1

3 3 2 1

0 0 1 0

1 0 0 0

a

b

c

d

−⎡ ⎤ ⎡ ⎤⎡ ⎤⎢ ⎥ ⎢ ⎥⎢ ⎥− − −⎢ ⎥ ⎢ ⎥⎢ ⎥=⎢ ⎥ ⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ ⎥⎢ ⎥⎣ ⎦ ⎣ ⎦⎣ ⎦

pqDpDq

MH GH

Page 20: CS G140 Graduate Computer Graphics

April 20, 2023 20College of Computer and Information Science, Northeastern University

Hermite Blending Functions

( ) 3 2 3 2

2 2 1 1

3 3 2 11 1

0 0 1 0

1 0 0 0

t t t t t t t

−⎡ ⎤ ⎡ ⎤⎡ ⎤⎢ ⎥ ⎢ ⎥⎢ ⎥− − −⎢ ⎥ ⎢ ⎥⎢ ⎥⎡ ⎤ ⎡ ⎤= =⎣ ⎦ ⎣ ⎦⎢ ⎥ ⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ ⎥⎢ ⎥⎣ ⎦ ⎣ ⎦⎣ ⎦

H

p p

q qP M

Dp Dp

Dq Dq

( ) ( ) ( ) ( ) ( )3 2 3 2 3 2 3 22 3 1 2 3 2t t t t t t t t t t= − + + − + + − + + −P p q Dp Dq

( ) ( ) ( ) ( ) ( )0 1 2 3t H t H t H t H t= + + +P p q Dp Dq

Page 21: CS G140 Graduate Computer Graphics

April 20, 2023 21College of Computer and Information Science, Northeastern University

Splines of Hermite Cubics

a C1 spline of Hermite curves

a G1 but not C1 spline of Hermite curves

The vectors shown are 1/3 the length of the tangent vectors.

Page 22: CS G140 Graduate Computer Graphics

April 20, 2023 22College of Computer and Information Science, Northeastern University

Computing the Tangent VectorsCatmull-Rom Spline

p1

p2

p3

p4

p5

P(0) = p3

P(1) = p4

P'(0) = ½(p4 - p2 )

P'(1) = ½(p5 - p3 )

Page 23: CS G140 Graduate Computer Graphics

April 20, 2023 23College of Computer and Information Science, Northeastern University

Cardinal Spline

The Catmull-Rom spline

P(0) = p3

P(1) = p4

P'(0) = ½(p4 - p2 )

P'(1) = ½(p5 - p3 )

is a special case of the Cardinal spline

P(0) = p3

P(1) = p4

P'(0) = (1 - t)(p4 - p2 )

P'(1) = (1 - t)(p5 - p3 )

0 ≤ t ≤ 1 is the tension.

Page 24: CS G140 Graduate Computer Graphics

April 20, 2023 24College of Computer and Information Science, Northeastern University

Drawing Hermite Cubics

• How many points should we draw?• Will the points be evenly distributed if we use a

constant increment on t ?

• We actually draw Bezier cubics.

( ) ( ) ( ) ( ) ( )3 2 3 2 3 2 3 22 3 1 2 3 2t t t t t t t t t t= − + + − + + − + + −P p q Dp Dq

Page 25: CS G140 Graduate Computer Graphics

April 20, 2023 25College of Computer and Information Science, Northeastern University

General Bezier Curves

( ) ( )

( ) ( )

( ) ( ) ( ) ( )

0

,

, , 1 1, 1

Given 1 control points

1 0 1

where

1 0,

1 0

We will only use cubic Bezier curves, 3.

i

nn k k

k

n kkk n

k n k n k n

n

nt t t t

k

nb t t t k n

k

b t t b t tb t k n

n

=

− − −

+

⎛ ⎞= − ≤ ≤⎜ ⎟

⎝ ⎠

⎛ ⎞= − =⎜ ⎟⎝ ⎠

= − + ≤ <

=

L

k

p

B p

Page 26: CS G140 Graduate Computer Graphics

April 20, 2023 26College of Computer and Information Science, Northeastern University

Low Order Bezier Curves

p0

n = 0 b0,0 (t) = 1

B(t) = p0 b0,0 (t) = p0 0 ≤ t ≤ 1

p0 n = 1 b0,1 (t) = 1 - t b1,1 (t) = t

B(t) = (1 - t) p0 + t p1 0 ≤ t ≤ 1p1

p0n = 2 b0,2 (t) = (1 - t)2 b1,2 (t) = 2t (1 - t) b2,2 (t) = t2

B(t) = (1 - t) 2 p0 + 2t (1 - t)p1 + t2 p2 0 ≤ t ≤ 1

p1

p2

Page 27: CS G140 Graduate Computer Graphics

April 20, 2023 27College of Computer and Information Science, Northeastern University

Bezier Curves

Bezier Arch

p

q

r

s

n = 3 b0,3 (t) = (1 - t)3 b1,3 (t) = 3t (1 - t)2

b2,3 (t) = 3t2(1 - t) b2,3 (t) = t3

B(t) = (1 - t) 3 p + 3t (1 - t)2q + 3t2(1 - t)r + t3s 0 ≤ t ≤ 1

Page 28: CS G140 Graduate Computer Graphics

April 20, 2023 28College of Computer and Information Science, Northeastern University

Bezier Matrix

1 3 3 1

3 6 3 0

3 3 0 0

1 0 0 0

a

b

c

d

− −⎡ ⎤ ⎡ ⎤⎡ ⎤⎢ ⎥ ⎢ ⎥⎢ ⎥−⎢ ⎥ ⎢ ⎥⎢ ⎥=

−⎢ ⎥ ⎢ ⎥⎢ ⎥⎢ ⎥ ⎢ ⎥⎢ ⎥⎣ ⎦ ⎣ ⎦⎣ ⎦

pqrs

MB

B(t) = (1 - t) 3 p + 3t (1 - t)2q + 3t2(1 - t)r + t3s 0 ≤ t ≤ 1

B(t) = a t 3 + bt2 + ct + d 0 ≤ t ≤ 1

GB

Page 29: CS G140 Graduate Computer Graphics

April 20, 2023 29College of Computer and Information Science, Northeastern University

Geometry Vector

( )

( )

3 2

The Hermite Geometry Vector

The Bezier Geometry Vector

1

H H H

B B B

G H t TM G

G B t TM G

T t t t

⎡ ⎤⎢ ⎥⎢ ⎥= =⎢ ⎥⎢ ⎥⎣ ⎦

⎡ ⎤⎢ ⎥⎢ ⎥= =⎢ ⎥⎢ ⎥⎣ ⎦

⎡ ⎤= ⎣ ⎦

p

q

Dp

Dq

p

q

r

s

Page 30: CS G140 Graduate Computer Graphics

April 20, 2023 30College of Computer and Information Science, Northeastern University

Properties of Bezier Curves

( ) ( )( ) ( ) ( ) ( )

( ) ( ) ( )( )3 3

33,3

1 1

0 1

0 3 1 3

The curve is tangent to the segments and .

The curve lies in the convex hull of the control points since

31 1 1

k kk

k k

b t t t t tk

= =

= =

= − = −

⎛ ⎞= − = − + =⎜ ⎟

⎝ ⎠∑ ∑

P p P s

P' q p P' s r

pq rs

Page 31: CS G140 Graduate Computer Graphics

April 20, 2023 31College of Computer and Information Science, Northeastern University

Geometry of Bezier Arches

p

q

r

s

Pick a t between 0 and 1 and go t of the way along each edge.

B(t)

Join the endpoints and do it again.

Page 32: CS G140 Graduate Computer Graphics

April 20, 2023 32College of Computer and Information Science, Northeastern University

Geometry of Bezier Arches

p

q

r

s

We only use t = 1/2.

pqrs = B(1/2)pq

qr

rspqr

qrs

Page 33: CS G140 Graduate Computer Graphics

drawArch(P, Q, R, S){if (ArchSize(P, Q, R, S) <= .5 ) Dot(P);else{PQ = (P + Q)/2;QR = (Q + R)/2;RS = (R + S)/2;

PQR = (PQ + QR)/2;QRS = (QR + RS)/2;

PQRS = (PQR + QRS)/2

drawArch(P, PQ, PQR, PQRS);drawArch(PQRS, QRS, RS, S);

}}

Page 34: CS G140 Graduate Computer Graphics

April 20, 2023 34College of Computer and Information Science, Northeastern University

Putting it All Together

• Bezier Archer and Catmull-Rom Splines

Page 35: CS G140 Graduate Computer Graphics

April 20, 2023 35College of Computer and Information Science, Northeastern University

Time for a Break

Page 36: CS G140 Graduate Computer Graphics

April 20, 2023 36College of Computer and Information Science, Northeastern University

Surface Patch

P(u,v) 0 u, v 1

A patch is the continuous image of a square in n-space.

Page 37: CS G140 Graduate Computer Graphics

April 20, 2023 37College of Computer and Information Science, Northeastern University

Bezier Patch Geometry

Page 38: CS G140 Graduate Computer Graphics

April 20, 2023 38College of Computer and Information Science, Northeastern University

Bezier Patch

00P

P00 P10

P01

P02P03

P11

P12

P13

P20

P30

P21

P22

P23

P31

P32 P33

Page 39: CS G140 Graduate Computer Graphics

April 20, 2023 39College of Computer and Information Science, Northeastern University

Bezier Patch Computation

( ) ( ) ( )3 3

0 0

, i ji j

u v B u B v= =

= ∑∑ ijQ P

3

23 2 1

1

TB B

v

vu u u M M

v

⎡ ⎤⎢ ⎥⎢ ⎥⎡ ⎤⎡ ⎤=⎣ ⎦⎣ ⎦⎢ ⎥⎢ ⎥⎣ ⎦

P

1 3 3 1

3 6 3 0

3 3 0 0

1 0 0 0

TB BM M

− −⎡ ⎤⎢ ⎥−⎢ ⎥= =−⎢ ⎥⎢ ⎥⎣ ⎦

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

00 01 02 03

10 11 12 13

20 21 22 23

30 31 32 33

P P P P

P P P PP =

P P P P

P P P P

Page 40: CS G140 Graduate Computer Graphics

April 20, 2023 40College of Computer and Information Science, Northeastern University

Bezier Patch

00P

P00 P10

P01

P02P03

P11

P12

P13

P20

P30

P21

P22

P23

P31

P32 P33

Q(0,v)

Q(1,v)Q(u,0)

Q(u,1)

Page 41: CS G140 Graduate Computer Graphics

April 20, 2023 41College of Computer and Information Science, Northeastern University

Bezier Patch

00P

P00 P10

P01

P02P03

P11

P12

P13

P20

P30

P21

P22

P23

P31

P32 P33

Qu(0,0) = 3(P10 – P00)

Qv(0,0) = 3(P01 – P00)

Quv(0,0) = 9(P00 – P01 – P10 + P11)

Page 42: CS G140 Graduate Computer Graphics

April 20, 2023 42College of Computer and Information Science, Northeastern University

Properties of Bezier Surfaces

• A Bézier patch transforms in the same way as its control points under all affine transformations

• All u = constant and v = constant lines in the patch are Bézier curves.

• A Bézier patch lies completely within the convex hull of its control points.

• The corner points in the patch are the four corner control points.

• A Bézier surface does not in general pass through its other control points.

Page 43: CS G140 Graduate Computer Graphics

April 20, 2023 43College of Computer and Information Science, Northeastern University

Rendering Bezier Patcheswith a mesh

Chris Bently - Rendering Bezier Patches

3. Use these derived points as the control points for new Bezier curves running in the v direction

( ) ( ) ( ) ( ) 3 2 1u u u u u u u B⎡ ⎤=⎡ ⎤⎣ ⎦ ⎣ ⎦0 1 2 3Q Q Q Q P

1. Consider each row of control points as defining 4 separate Bezier curves: Q0(u) … Q3(u)

2. For some value of u, say 0.1, for each Bezier curve, calculate Q0(u) … Q3(u).

4. Generate edges and polygons from grid of surface points.

Page 44: CS G140 Graduate Computer Graphics

April 20, 2023 44College of Computer and Information Science, Northeastern University

Subdividing Bezier Patch

00P

P00 P10

P01

P02P03

P11

P12

P13

P20

P30

P21

P22

P23

P31

P32 P33

Subdivide until the control points are coplanar.

Page 45: CS G140 Graduate Computer Graphics

April 20, 2023 45College of Computer and Information Science, Northeastern University

Blending Bezier Patches

Page 46: CS G140 Graduate Computer Graphics

Teapot Datadouble teapot_data[][] = {{ -80.00, 0.00, 30.00, -80.00, -44.80, 30.00, -44.80, -80.00, 30.00, 0.00, -80.00, 30.00, -80.00, 0.00, 12.00, -80.00, -44.80, 12.00, -44.80, -80.00, 12.00, 0.00, -80.00, 12.00, -60.00, 0.00, 3.00, -60.00, -33.60, 3.00, -33.60, -60.00, 3.00, 0.00, -60.00, 3.00, -60.00, 0.00, 0.00, -60.00, -33.60, 0.00, -33.60, -60.00, 0.00, 0.00, -60.00, 0.00,

}, …

Page 47: CS G140 Graduate Computer Graphics

April 20, 2023 47College of Computer and Information Science, Northeastern University

Bezier Patch Continuity

00P

If these sets of control points are colinear, the surface will have G1 continuity.

Page 48: CS G140 Graduate Computer Graphics

April 20, 2023 48College of Computer and Information Science, Northeastern University

Quadric Surfaces

2 2 2

2 2 21

x y z

a b c+ + =

ellipsoid elliptic cylinder

2 2

2 21

x y

a b+ =

Page 49: CS G140 Graduate Computer Graphics

April 20, 2023 49College of Computer and Information Science, Northeastern University

Quadric Surfaces

2 2 2

2 2 21

x y z

a b c+ − =−

1-sheet hyperboloid 2-sheet hyperboloid

2 2 2

2 2 21

x y z

a b c+ − =

Page 50: CS G140 Graduate Computer Graphics

April 20, 2023 50College of Computer and Information Science, Northeastern University

Quadric Surfaces

cones

2 22

2 2

x yz

a b= +

Page 51: CS G140 Graduate Computer Graphics

April 20, 2023 51College of Computer and Information Science, Northeastern University

elliptic parabaloid

2 2

2 2

x yz

a b= +

2 2

2 2

y xz

b a= −

hyperbolic parabaloid

Page 52: CS G140 Graduate Computer Graphics

April 20, 2023 52College of Computer and Information Science, Northeastern University

Quadric Surfaces

hyperbolic cylinderparabolic cylinder

2 2

2 21

x y

a b− =2 2 0x y+ =

Page 53: CS G140 Graduate Computer Graphics

April 20, 2023 53College of Computer and Information Science, Northeastern University

General Quadricsin General Position

Page 54: CS G140 Graduate Computer Graphics

April 20, 2023 54College of Computer and Information Science, Northeastern University

General Quadric Equation

( )( )( )

0 1 0

0 1 0

0 1 0

d d

d

d d

x t x tx x x x

y t y ty y y y

z t z tz z z z

= + = −

= + = −

= + = −

( ) ( ) ( )( )( ) ( )( ) ( )( )( ) ( ) ( )

2 2 2

0 0 0

0 0 0 0 0 0

0 0 0

2 2 2

2 2 2 0

d d d

d d d d d d

d d d

a x tx b y ty c z tz

d x tx y ty e y ty z tz f x tx z tz

g x tx h y ty j z tz k

+ + + + +

+ + + + + + + + +

+ + + + + + + =

2 2 2 2 2 2 2 2 2 0ax by cz dxy eyz fxz gx hy jz k+ + + + + + + + + =

Ray Equations

( ) ( ) ( )

2 2 2

0 0 0

0 0 0 0 0 0

2 2 20 0 0 0 0 0 0 0 0 0 0 0

2 2 2

2 2 2

2 2 2 2 2 2

2 2 2 2 2 2

d d d d d d d d d

d d d

d d d d d d d d d

A ax by cz dx y ey z fx z

B ax x by y cz z

d x y x y e y z y z f x z x z gx hy jz

C ax by cz dx y ey z fx z gx hy jz k

= + + + + +

= + +

+ + + + + + + + +

= + + + + + + + + +

Page 55: CS G140 Graduate Computer Graphics

April 20, 2023 55College of Computer and Information Science, Northeastern University

Ray Quadric IntersectionQuadratic Coefficients

A = a*xd*xd + b*yd*yd + c*zd*zd

+ 2[d*xd*yd + e*yd*zd + f*xd*zd

B = 2*[a*x0*xd + b*y0*yd + c*z0*zd

+ d*(x0*yd + xd*y0 ) + e*(y0*zd + yd*z0 ) + f*(x0*zd + xd*z0 )

+ g*xd + h*yd + j*zd]

C = a*x0*x0 + b*y0*y0 + c*z0*z0

+ 2*[d*x0*y0 + e*y0*z0 + f*x0*z0 + g*x0 + h*y0 + j*z0] + k

Page 56: CS G140 Graduate Computer Graphics

April 20, 2023 56College of Computer and Information Science, Northeastern University

Quadric Normals

Q x, y, z( ) =ax2 +by2 + cz2 + 2dxy+ 2eyz+ 2 fxz+ 2gx+ 2hy+ 2 jz+ k

∂Q∂x

=2ax+ 2dy+ 2 fz+ 2g=2 ax+ dy+ fz+ g( )

∂Q∂y

=2by+ 2dx+ 2ez+ 2h=2 by+ dx+ ez+ h( )

∂Q∂z

=2cz+ 2ey+ 2 fx+ 2 j =2 cz+ ey+ fx+ j( )

N =∂Q∂x

,∂Q∂y

,∂Q∂z

⎝⎜⎞

⎠⎟Normalize N and change its sign if necessary.

Page 57: CS G140 Graduate Computer Graphics

April 20, 2023 57College of Computer and Information Science, Northeastern University

MyCylinders

Page 58: CS G140 Graduate Computer Graphics

April 20, 2023 58College of Computer and Information Science, Northeastern University

Student Images

Page 59: CS G140 Graduate Computer Graphics

April 20, 2023 59College of Computer and Information Science, Northeastern University

Student Images