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.
- ________ 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?
- ________ 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} $}
- ________ If a=(4,3,5) then write {$(a\cdot p)\, a$} as a matrix M,
depending only on {$a$}, times {$p$}.
- ________ 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.
- ________ Write the vector formula for the 3D rotation by 60 degrees about the Y axis.
- ______ Write the quaternion for the 3D rotation by 60 degrees about the Y axis.
- ________ What is one problem with interpolating a spline through the control points instead of approximating a spline near the points?
- ______ What advantage do cubic splines have over quadratic splines?
- ________ What technique computes the surroundings visible as a reflected image in a shiny object?
- ________ 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.
- ________ In the graphics pipeline, does the rasterizer send its output to the
vertex or fragment shader? (Pick one, or pick both.)
- ________ 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.
- ________ Where in the graphics pipeline does texture mapping take place?
- ________ When clipping in 3D, how many independent clippers are required in
the pipeline?
- ______ 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.
- ______ Are vertices assembled into objects in the vertex shader, in the fragment shader, or in the rasterizer?
- ________ 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).
- ________ Draw 1/8 of a circle of radius R=12 using the Bresenham method. Show your work.
- ________ 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.
- ________ 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.
- ______ Is the following code a vertex shader or a fragment shader?
void main(void) { gl_FragColor = gl_FrontColor;}
- ______ Do you set a texture coordinate thus
glTexCoord2f(s0, t0);
before or after the vertex it applies to?
- _______ 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; }
- ______ Where do the variables N and L get their values from?
- _______ What uses the value of the variable
gl_FragColor
?
- ______ What technique is used here:
gl_FragColor.rgb
?
END