## ECSE-4750 Computer Graphics, Rensselaer Polytechnic Institute, Final Exam (v2), Fall 2011, 15 Dec 2011 3-6pm, DCC330




NAME: _______________________________________________________




EMAIL:______________________________________________ RIN:_________________________________

Subtotal of questions 1-8:_______________, q 9-17:____________, q 18-25:____________, TOTAL: ______________

Answer every question.There are 6 pages with 25 questions. Each question is worth 4 points.

This exam is open book: you may use calculators and any paper books and notes that you brought with you. You may not use computers or communication devices, or share material with other students.

1. ________ Consider a 3D triangle with vertices (0,0,0), (5,0,10), (0,20,0). What is the z value of the point in the triangle with x=3, y=1?

2. ________ Why can the following not possibly be a 3D Cartesian rotation matrix? {$\begin{pmatrix} 1& 0 &0\\1 & 0 &0\\0& 0 &1\end{pmatrix}$}

3. ________ If a=(4,3,5) then write {$(a\cdot p)\, a$} as a matrix M, depending only on {$a$}, times {$p$}.

4. ________ What is the 4x4 homogeneous matrix for a 3D rotation by 90 degrees about the X axis, followed by this translation: x'=x-1, y'=y+1, z'=z+2.

5. ________ Write the vector formula for the 3D rotation by 60 degrees about the Y axis.

6. ______ Write the quaternion for the 3D rotation by 60 degrees about the Y axis.

7. ________ What is one problem with interpolating a spline through the control points instead of approximating a spline near the points?

8. ______ What advantage do cubic splines have over quadratic splines?

9. ________ What technique computes the surroundings visible as a reflected image in a shiny object?

10. ________ When projected objects are less than one pixel large, there is a lot of fictitious high frequency clutter in the image. Name the technique used to fix this.

11. ________ In the graphics pipeline, does the rasterizer send its output to the vertex or fragment shader? (Pick one, or pick both.)

12. ________ In the graphics pipeline, when a triangle is processed, the (x,y,z) coordinates of the vertices are interpolated across the whole triangle to give the coordinates of each fragment. Name two other things that may commonly be specified at the vertices and then interpolated across the triangle to give a value for each fragment.

13. ________ Where in the graphics pipeline does texture mapping take place?

14. ________ When clipping in 3D, how many independent clippers are required in the pipeline?

15. ______ Do a view normalization of this square A(3,3), B(3,4), C(4,4), D(4,3) that is being viewed from (0,0) and projected into the plane x=1. The transformed square, when seen with a parallel projection from x= -infinity should look the same as the original square when seen in perspective from (0,0). That is, write the transformed coordinates for ABCD. Also, draw a figure showing the projection.

16. ______ Are vertices assembled into objects in the vertex shader, in the fragment shader, or in the rasterizer?

17. ________ Draw an example where clipping a polygon causes it to split into two pieces (connected by edges running along the edge of the clip window).

18. ________ Draw 1/8 of a circle of radius R=12 using the Bresenham method. Show your work.

19. ________ Following the principle that less is more, the OpenGL designers decided not to include some functionality that a program that processes images would probably need. Name it.

20. ________ When compositing several images, the limited precision of the color (frame) buffers may hurt the image quality. Therefore, OpenGL also has another buffer to composit into. Name it.

21. ______ Is the following code a vertex shader or a fragment shader?  void main(void) { gl_FragColor = gl_FrontColor;}

22. ______ Do you set a texture coordinate thus glTexCoord2f(s0, t0); before or after the vertex it applies to?

23. _______ Can the standard OpenGL pipeline easily handle light scattering from object to object? Why (not)?

Look at this fragment shader:
     // diffuse.fs: per-pixel diffuse lighting
varying vec3 N, L;
void main(void)
{    // output the diffuse color
float intensity = max(0.0,
dot(normalize(N), normalize(L)));
gl_FragColor = gl_Color;
gl_FragColor.rgb *= intensity;  }


24. ______ Where do the variables N and L get their values from?

25. _______ What uses the value of the variable gl_FragColor?

26. ______ What technique is used here: gl_FragColor.rgb?

END