<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CG ECSE-4750-01 and 6964-01 Computer Graphics, Fall 2018, Rensselaer Polytechnic Institute (Posts about homework)</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/</link><description></description><atom:link href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/categories/homework.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Fri, 21 Dec 2018 20:21:26 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>CG Homework 11, due Mon 2018-12-03 2359</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework11/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Computing the effect of light reflecting off of one diffuse surface onto the other surfaces in the scene is called:&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Bitblt&lt;/li&gt;
&lt;li&gt;Bump mapping&lt;/li&gt;
&lt;li&gt;Environment mapping&lt;/li&gt;
&lt;li&gt;Radiosity&lt;/li&gt;
&lt;li&gt;Texture mapping&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Painting a image onto a face to simulate fine detail is called:&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Bitblt&lt;/li&gt;
&lt;li&gt;Bump mapping&lt;/li&gt;
&lt;li&gt;Environment mapping&lt;/li&gt;
&lt;li&gt;Radiosity&lt;/li&gt;
&lt;li&gt;Texture mapping&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Pretending to alter the normal vectors to the surface during rendering is called:&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Bitblt&lt;/li&gt;
&lt;li&gt;Bump mapping&lt;/li&gt;
&lt;li&gt;Environment mapping&lt;/li&gt;
&lt;li&gt;Radiosity&lt;/li&gt;
&lt;li&gt;Texture mapping&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Quickly copying blocks of pixels from one buffer to another is called:&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Bitblt&lt;/li&gt;
&lt;li&gt;Bump mapping&lt;/li&gt;
&lt;li&gt;Environment mapping&lt;/li&gt;
&lt;li&gt;Radiosity&lt;/li&gt;
&lt;li&gt;Texture mapping&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Reflecting the objects around a shiny object onto its surface is called:&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Bitblt&lt;/li&gt;
&lt;li&gt;Bump mapping&lt;/li&gt;
&lt;li&gt;Environment mapping&lt;/li&gt;
&lt;li&gt;Radiosity&lt;/li&gt;
&lt;li&gt;Texture mapping&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;Answer: slides 9_3.&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Several coordinate systems are typically used in texture mapping.   Which one may be used to model curves and surfaces?&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Lagrangian coordinates&lt;/li&gt;
&lt;li&gt;Object or World Coordinates&lt;/li&gt;
&lt;li&gt;Parametric coordinates&lt;/li&gt;
&lt;li&gt;Texture coordinates&lt;/li&gt;
&lt;li&gt;Window Coordinates&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Which one is used to identify points in the image to be mapped?&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Lagrangian coordinates&lt;/li&gt;
&lt;li&gt;Object or World Coordinates&lt;/li&gt;
&lt;li&gt;Parametric coordinates&lt;/li&gt;
&lt;li&gt;Texture coordinates&lt;/li&gt;
&lt;li&gt;Window Coordinates&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Which one is conceptually, where the mapping takes place?&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Lagrangian coordinates&lt;/li&gt;
&lt;li&gt;Object or World Coordinates&lt;/li&gt;
&lt;li&gt;Parametric coordinates&lt;/li&gt;
&lt;li&gt;Texture coordinates&lt;/li&gt;
&lt;li&gt;Window Coordinates&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Which one is where the final image is really produced?&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Lagrangian coordinates&lt;/li&gt;
&lt;li&gt;Object or World Coordinates&lt;/li&gt;
&lt;li&gt;Parametric coordinates&lt;/li&gt;
&lt;li&gt;Texture coordinates&lt;/li&gt;
&lt;li&gt;Window Coordinates&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;Answers: slide 9_4_5.&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Mathematically, the aliasing problem in CG&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;happens when high frequency signals are not sampled often enough.&lt;/li&gt;
&lt;li&gt;happens when low frequency signals are sampled too often.&lt;/li&gt;
&lt;li&gt;is a new problem that did not occur with the old displays.&lt;/li&gt;
&lt;li&gt;can be reduced by subsampling and averaging&lt;/li&gt;
&lt;li&gt;both 1 and 4.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; When you add many images together to blend them, there may be problems: (10_3)&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Loss of accuracy if each color has only 8 bits.&lt;/li&gt;
&lt;li&gt;You can't do this at all in WebGL.&lt;/li&gt;
&lt;li&gt;This requires using a color buffer of at least 4096x4096.&lt;/li&gt;
&lt;li&gt;This requires a stencil buffer.&lt;/li&gt;
&lt;li&gt;This requires that the A component be set to 0.0.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Fog has been removed from OpenGL, and is not in WebGL, because: (10_3)&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;The several possible fog factors (linear, exponential, gaussian) were too confusing.&lt;/li&gt;
&lt;li&gt;With cleaner air, we no longer want to model smog.&lt;/li&gt;
&lt;li&gt;It executed too slowly.&lt;/li&gt;
&lt;li&gt;Removing it simplified the standard, and anyway you can implement it yourself.&lt;/li&gt;
&lt;li&gt;It wasn't removed; it's still part of WebGL.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; What does sampler2D do? (10_4)&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Return a sample random variable from a probability distribution.&lt;/li&gt;
&lt;li&gt;Return one specific texel from a texture map.&lt;/li&gt;
&lt;li&gt;Return a point on a bezier curve by interpolating control points.&lt;/li&gt;
&lt;li&gt;Interpoint a texture value from nearby texels.&lt;/li&gt;
&lt;li&gt;Compute a phong-shaded color.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Rendering a scene by computing which pixels are colored by each object is called (12_5)&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Image space approach&lt;/li&gt;
&lt;li&gt;Modelview space approach&lt;/li&gt;
&lt;li&gt;Object space approach&lt;/li&gt;
&lt;li&gt;Pixel space approach&lt;/li&gt;
&lt;li&gt;Viewport space approach&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Rendering a scene by computing which objects are behind each pixel is called (12_5)&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Image space approach&lt;/li&gt;
&lt;li&gt;Modelview space approach&lt;/li&gt;
&lt;li&gt;Object space approach&lt;/li&gt;
&lt;li&gt;Pixel space approach&lt;/li&gt;
&lt;li&gt;Viewport space approach&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Cohen-Sutherland clipping (13_1)&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Clips faces fast by doing concave faces properly.&lt;/li&gt;
&lt;li&gt;Clips faces fast by normalizing the projection first.&lt;/li&gt;
&lt;li&gt;Clips lines fast by eliminating many simple cases quickly.&lt;/li&gt;
&lt;li&gt;Clips lines fast by using the fact the current CPUs do division fast.&lt;/li&gt;
&lt;li&gt;Clips textures fast with a mipmap.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; View normalization (13_1)&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Makes the clip region into a cube but changes object cubes into parallelepipeds.&lt;/li&gt;
&lt;li&gt;Preserves angles and distances.&lt;/li&gt;
&lt;li&gt;Preserves angles but not distances.&lt;/li&gt;
&lt;li&gt;Preserves distances but not angles.&lt;/li&gt;
&lt;li&gt;Was obsoleted by fast CPUs.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; About polygon clipping:  (13_2)&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;A polygon might gain vertices.&lt;/li&gt;
&lt;li&gt;A polygon might gain area.&lt;/li&gt;
&lt;li&gt;If a polygon's vertices are all outside the clip region, then it may be deleted.&lt;/li&gt;
&lt;li&gt;Using a 6-stage pipeline keeps the latency the same.&lt;/li&gt;
&lt;li&gt;Concave polygons become convex.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; From his profits from SGI, Netscape, and other startups, Jim Clark bought the world's &lt;em&gt;XXX&lt;/em&gt; largest yacht.&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;1st&lt;/li&gt;
&lt;li&gt;2nd&lt;/li&gt;
&lt;li&gt;3rd&lt;/li&gt;
&lt;li&gt;4th&lt;/li&gt;
&lt;li&gt;5th&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Which hidden surface algorithm sorts objects back-to-front? (13_2)&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;BSP tree&lt;/li&gt;
&lt;li&gt;depth (Z) buffer&lt;/li&gt;
&lt;li&gt;image space&lt;/li&gt;
&lt;li&gt;painter's&lt;/li&gt;
&lt;li&gt;scan line&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Which hidden surface algorithm preprocesses objects into a tree so that you can change the viewpoint and then render by traversing the tree in a different order?  (13_2)&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;BSP tree&lt;/li&gt;
&lt;li&gt;depth (Z) buffer&lt;/li&gt;
&lt;li&gt;image space&lt;/li&gt;
&lt;li&gt;painter's&lt;/li&gt;
&lt;li&gt;scan line&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Which hidden surface algorithm might send its output straight to a display like a CRT w/o ever storing the whole image?  (13_2)&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;BSP tree&lt;/li&gt;
&lt;li&gt;depth (Z) buffer&lt;/li&gt;
&lt;li&gt;image space&lt;/li&gt;
&lt;li&gt;painter's&lt;/li&gt;
&lt;li&gt;scan line&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Some colors that you can see on your display cannot be printed, and vv.  Why?  (13_4)&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;Purple is not a pure spectral color.&lt;/li&gt;
&lt;li&gt;The UV emitted by the display fades the printer paper.&lt;/li&gt;
&lt;li&gt;The display and printer's gamuts don't match.&lt;/li&gt;
&lt;li&gt;The printer has 4 inks but the display only 3 primaries.&lt;/li&gt;
&lt;li&gt;There's no such thing as a standard display - different manufacturers have different notions of &lt;em&gt;red&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; What is happening in the following code that is part of a picking program that we saw (11_4):&lt;/p&gt;
&lt;pre class="literal-block"&gt;
if(i==0) gl_FragColor = c[0];
  else if(i==1) gl_FragColor = c[1];
  else if(i==2) gl_FragColor = c[2];
  else if(i==3) gl_FragColor = c[3];
  else if(i==4) gl_FragColor = c[4];
  else if(i==5) gl_FragColor = c[5];
  else if(i==6) gl_FragColor = c[6];
&lt;/pre&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;This assigns to each pixel the number that we'd like returned if the user clicks on that pixel.&lt;/li&gt;
&lt;li&gt;This assigns to each pixel the true color of that polygon.&lt;/li&gt;
&lt;li&gt;This keeps track of how many times the user clicked on that pixel.&lt;/li&gt;
&lt;li&gt;This notes how many vertices that polygon has.&lt;/li&gt;
&lt;li&gt;This notes the shininess exponent for that face.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Radiosity is better than ray tracing when the scene is all&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;diffuse objects&lt;/li&gt;
&lt;li&gt;objects outside the viewing region&lt;/li&gt;
&lt;li&gt;objects that are very close to the viewpoint&lt;/li&gt;
&lt;li&gt;specular objects&lt;/li&gt;
&lt;li&gt;very small objects&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Ray tracing is better than radiosity when the scene is all&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;diffuse objects&lt;/li&gt;
&lt;li&gt;objects outside the viewing region&lt;/li&gt;
&lt;li&gt;objects that are very close to the viewpoint&lt;/li&gt;
&lt;li&gt;specular objects&lt;/li&gt;
&lt;li&gt;very small objects&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Firing multiple rays through each pixel handles the problem of&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;diffuse objects&lt;/li&gt;
&lt;li&gt;objects outside the viewing region&lt;/li&gt;
&lt;li&gt;objects that are very close to the viewpoint&lt;/li&gt;
&lt;li&gt;specular objects&lt;/li&gt;
&lt;li&gt;very small objects&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Consider a 2D Cartesian cubic Bezier curve with these control points:  (0,0), (0,1), (1,1), (1,0).
What is the point at t=0?   OK to look up the formula.&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;(0,0)&lt;/li&gt;
&lt;li&gt;(0,1)&lt;/li&gt;
&lt;li&gt;(1,0)&lt;/li&gt;
&lt;li&gt;(1/2, 3/4)&lt;/li&gt;
&lt;li&gt;(1/2,1)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; What is the point at t=1/2?&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;(0,0)&lt;/li&gt;
&lt;li&gt;(0,1)&lt;/li&gt;
&lt;li&gt;(1,0)&lt;/li&gt;
&lt;li&gt;(1/2, 3/4)&lt;/li&gt;
&lt;li&gt;(1/2,1)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; What is the point at t=1?&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;(0,0)&lt;/li&gt;
&lt;li&gt;(0,1)&lt;/li&gt;
&lt;li&gt;(1,0)&lt;/li&gt;
&lt;li&gt;(1/2, 3/4)&lt;/li&gt;
&lt;li&gt;(1/2,1)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; If you interpolate a curve through a list of control points instead of approximating a curve near the points, then what happens?&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;It will not be possible to join two curves and match the radii of curvature.&lt;/li&gt;
&lt;li&gt;The calculations to compute the curve will take impossibly long.&lt;/li&gt;
&lt;li&gt;The curve will stay within the convex hull of the control points.&lt;/li&gt;
&lt;li&gt;The curve will swing outside the convex hull of the control points.&lt;/li&gt;
&lt;li&gt;This isn't possible for curves of odd degree.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; If you use quadratic Bezier curves, then what happens?&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;It will not be possible to join two curves and match the radii of curvature.&lt;/li&gt;
&lt;li&gt;The calculations to compute the curve will take impossibly long.&lt;/li&gt;
&lt;li&gt;The curve will stay within the convex hull of the control points.&lt;/li&gt;
&lt;li&gt;The curve will swing outside the convex hull of the control points.&lt;/li&gt;
&lt;li&gt;This isn't possible for curves of even degree.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;(Total: 64 points.)&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</description><category>homework</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework11/</guid><pubDate>Mon, 26 Nov 2018 05:00:00 GMT</pubDate></item><item><title>CG Homework 7, due Mon 2018-11-05 2359</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework7/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(4 pts)&lt;/em&gt;  Use the homogeneous matrix to project homogeneous points onto the plane x+3y+4z=5, with COP at the origin. What does the point (1,2,4,5) project to? Give the answer as a Cartesian point.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(4 pts)&lt;/em&gt; Repeat the previous question with the COP changed to (1,1,1,1).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(6 pts)&lt;/em&gt; Do exercise 5.6 on page 272 of the text,&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(6 pts)&lt;/em&gt; &lt;em&gt;This question will take some thinking).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Imagine that you have an infinitely large room illuminated
by one infinitely long row of point lights.  This figure
shows a side view of the room.&lt;/p&gt;
&lt;p&gt;The lights are &lt;strong&gt;h&lt;/strong&gt; above the floor and are 1
meter from each other.  Assume that the ceiling above the
lights is black and that no light reflects off of anything.&lt;/p&gt;
&lt;p&gt;An object at distance &lt;strong&gt;d&lt;/strong&gt; from a light gets illuminated
with a brightness &lt;span class="math"&gt;\(\frac{1}{d^2}\)&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Each point on the floor is illuminated by all the lights,
but more brightly by the closer lights.&lt;/p&gt;
&lt;p&gt;A point &lt;strong&gt;p&lt;/strong&gt; directly below a light will be a little
brighter than a point &lt;strong&gt;q&lt;/strong&gt; halfway between two such
points.  That is the problem --- we want the floor (at least
the part directly below the line of lights) to be evenly
lit, at least within 1%.&lt;/p&gt;
&lt;p&gt;However, the higher the line of lights, the more evenly the
floor will be lit.&lt;/p&gt;
&lt;p&gt;Your question is to tell us what is the minimum value for
&lt;strong&gt;h&lt;/strong&gt; so that the line of the floor below the line of
lights is evenly lit within 10%.&lt;/p&gt;
&lt;img alt="../../images/hw-lights.png" src="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/images/hw-lights.png"&gt;
&lt;p&gt;E.g., the brightness at &lt;strong&gt;p&lt;/strong&gt; is&lt;/p&gt;
&lt;p&gt;&lt;span class="math"&gt;\(\sum_{i=-\infty}^{\infty} \;\; \frac{1}{\left(h^2+i^2\right)}\)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;(Total: 20 points.)&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</description><category>homework</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework7/</guid><pubDate>Tue, 16 Oct 2018 04:00:00 GMT</pubDate></item><item><title>CG Homework 6, due Mon 2018-10-29 2359</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework6/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;em&gt;(10 pts)&lt;/em&gt;  Write 200 words describing your proposed project.  Give us an idea of what you want to do and how you propose to do it.  Perhaps include a block diagram of its components and a gantt chart of when you propose finish various stages.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;(Total: 10 points.)&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</description><category>homework</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework6/</guid><pubDate>Mon, 15 Oct 2018 04:00:00 GMT</pubDate></item><item><title>CG Homework 5, due Mon 2018-10-22 2359</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework5/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; What is the angle (in degrees) between these two vectors: (1,2,0), (1,3,2)?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; (Reverse engineering rotations) In 2D, if the point (4,2) rotates about the origin to (2,-4), what's the angle?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Give the matrix M that has this property: for all vectors p, &lt;span class="math"&gt;\(Mp = \begin{pmatrix}4\\2\\5\end{pmatrix} \times p\)&lt;/span&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Give the matrix M that has this property: for all vectors p,
&lt;span class="math"&gt;\(Mp = \left( \begin{pmatrix}2\\5\\4\end{pmatrix} \cdot p \right) \begin{pmatrix}2\\5\\4\end{pmatrix}\)&lt;/span&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Why can the following not possibly be a 3D Cartesian rotation matrix?&lt;/p&gt;
&lt;p&gt;&lt;span class="math"&gt;\(\begin{pmatrix}  3&amp;amp; 0 &amp;amp;0\\1 &amp;amp; 0 &amp;amp;0\\0&amp;amp; 0 &amp;amp;1\end{pmatrix}\)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Use any method (not involving soliciting answers on the internet) to rotate the point (6,6,9) by 120 degrees about the axis (2,2,3).   Explain your method.  (E.g., if you saw the answer in a vision, are your visions generally accurate?)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Can the volume of a small cube change when its vertices are rotated? (yes or no).  Why (not)?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; What is the ''event loop''?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Why does putting all your vertices into an array and telling OpenGL about it make a big graphics program faster?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Since the Z (aka depth) buffer looks so useful, why is it not enabled by default?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; What's the quaternion representing a rotation of 180 degrees about the axis (1,0,0)?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Use the quaternion formulation to rotate the point (0,1,0) by 180 degrees about the axis (1,0,0).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; Use the vector formulation to rotate the point (0,1,0) by 180 degrees about the axis (1,0,0).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(14)&lt;/em&gt; Extend your program that displays the Starship Enterprise as follows:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Do the rotation in the vertex shader instead of in the javascript program.&lt;/li&gt;
&lt;li&gt;Make the color of each pixel depend on its z-value.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;(Total: 40 points.)&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</description><category>homework</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework5/</guid><pubDate>Sun, 14 Oct 2018 04:00:00 GMT</pubDate></item><item><title>CG Homework 10, due Mon 2018-11-26 2359</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework10/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;em&gt;(10 pts)&lt;/em&gt;  Write a brief progress report on your project.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;(Total: 10 points.)&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</description><category>homework</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework10/</guid><pubDate>Sat, 13 Oct 2018 04:00:00 GMT</pubDate></item><item><title>CG Homework 9, due Mon 2018-11-19 2359</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework9/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;!-- 2017 homework 7.  However this year, progress reports are homeworks. --&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;em&gt;(10 pts)&lt;/em&gt; Look at Figures 6.37 and 6.38 on pages 310 and 311 of the textbook.   Write 50-100 words on why they look different.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;(10 pts)&lt;/em&gt; Look at Figure 6.39 on page 314 of the textbook.   What is it about the spheres that  the global model looks different from the local?&lt;/li&gt;
&lt;li&gt;&lt;em&gt;(10 pts)&lt;/em&gt; Consider the sphere &lt;span class="math"&gt;\(x^2+y^2+z^2=169\)&lt;/span&gt;.  What is the normal to the sphere at the point (-12,3,-4)?   Be sure your normal is normalized.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;(10 pts)&lt;/em&gt;   Consider a block of glass with index of refraction 1.6.    Some light is shining straight down on it.  This is called normal incidence.    How much of the light reflects off the glass and how much transmits into the glass?   Hint: Use  Fresnel's law.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;(10 pts)&lt;/em&gt;   A small light source that is twice as far away is 1/4 as bright.  That is, there is an inverse square fall off for brightness.     However, when modeling light in graphics, we usually don't do that.  Why?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;(Total: 50 points.)&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</description><category>homework</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework9/</guid><pubDate>Fri, 12 Oct 2018 04:00:00 GMT</pubDate></item><item><title>CG Homework 8, due Mon 2018-11-12 2359</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework8/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;em&gt;(10 pts)&lt;/em&gt;  Write a brief progress report on your project.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;(Total: 10 points.)&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</description><category>homework</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework8/</guid><pubDate>Thu, 11 Oct 2018 04:00:00 GMT</pubDate></item><item><title>CG Homework 4, due Mon 2018-10-01 2359</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework4/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;p&gt;Modify the triangle or cad program as follows:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;The user can draw triangles by clicking on 3 vertices.   Don't use fans or strips, just simple triangles.&lt;/li&gt;
&lt;li&gt;Have 3 sliders to set the depths of the 3 vertices.  Thus the triangles can be slanted in distance.&lt;/li&gt;
&lt;li&gt;Have 3 menus to set the colors of the 3 vertices.  Interpolate the colors inside the triangles.&lt;/li&gt;
&lt;li&gt;Give each triangle a random velocity and angular momentum.&lt;/li&gt;
&lt;li&gt;If a triangle hits the border, have it bounce off.&lt;/li&gt;
&lt;li&gt;Now have fun creating a demo scene where the triangles move and cut through each other.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;(Total: 50 points.)&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</description><category>homework</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework4/</guid><pubDate>Sun, 23 Sep 2018 04:00:00 GMT</pubDate></item><item><title>CG Homework 2, due Mon 2018-09-17</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework2/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;div class="section" id="rules"&gt;
&lt;h2&gt;Rules&lt;/h2&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;You may work in teams of 2.  Each team should submit their solution under only 1 student's name, but mention both people at the top of the submission.  The other student's submission should just name the lead student.  (This makes it easier for us to track things and to avoid grading it twice.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Hand in your solution on RPILMS.   As for formats, we'll take (at least) a scanned image of a neatly handwritten page, raw text, PDF, and MS Word.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;For the programming question, pick whichever you prefer to get us the code:&lt;/p&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;Submit a zipped file, containing your .js and .html files and the utility files needed to run it.  It must be organized so that if we unzip into a random location and point the browser at the .html file, then it will work.&lt;/p&gt;
&lt;p&gt;It might be easier to move the utility .js files into the same directory as your code (and adjust the &lt;em&gt;include&lt;/em&gt; lines).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Put the code on a web server such as RCS.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="questions"&gt;
&lt;h2&gt;Questions&lt;/h2&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(5 pts)&lt;/em&gt; Which RPI grad was the technical person in the
founding group of NVidia?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(5 pts)&lt;/em&gt; What hardware component had to get much cheaper in
order to make frame buffers possible?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(5 pts)&lt;/em&gt; The progress of computer graphics has always been
enabled by new hardware.  One newish toy is Google Cardboard.
Pretend that I've never heard of it, and write 100 words or so
summarizing it and giving specific details.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(20)&lt;/em&gt; Modify last week's program to display the spaceship
NCC1701.&lt;/p&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;The data is in the file &lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/files/ncc1701b.data"&gt;ncc1701b.data&lt;/a&gt; .  Each
line gives the vertices of one triangle as follows:&lt;/p&gt;
&lt;p&gt;x1 y1 z1 x2 y2 z2 x3 y3 z3&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Insert the data into your javascript file and try displaying it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;If this is too much data, then reduce the number of triangles
until something displays.  Report what went wrong, and how
many triangles could be displayed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;You might have to scale the data to fit.  I'll let you figure
out the easiest way to do that.  The problem is that last
week's square had coordinates in the range from -1 to 1,
while the NCC1701 does not.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Attach a PDF of any files you modified and a screendump.  If
the file has a multi-thousand line array, it's ok to delete
the middle.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(5)&lt;/em&gt; In real life, light bounces from object to object, on
its way from the light source to the viewer.  However, the
OpenGL pipeline processes objects independently, and does not
allow that (except the an object can hide another object).
Why?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(10)&lt;/em&gt; According to the tristimulus model, our eyes have
three types of color receptors (cones).  However several
species and some rare human females have four types of cones.
They are called tetrachromats.&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Name some such animals.&lt;/li&gt;
&lt;li&gt;For humans, why is it (probably; opinions differ) only
females?&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;(Total: 50 points.)&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>homework</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework2/</guid><pubDate>Thu, 06 Sep 2018 04:00:00 GMT</pubDate></item><item><title>CG Homework 3, due Mon 2018-09-24 2359</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework3/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(10 pts)&lt;/em&gt;    Part of changing from one coordinate system to another is scaling and making things fit. E.g., suppose that you had a square with lower left corner (llc) (0,0) and upper right corner (urc) (1,1). You want to scale and center it to just fit into a rectangle with llc (0,0) and urc (2,3). The square stays a square but is probably larger or smaller. Then, these equations would do it:&lt;/p&gt;
&lt;div class="line-block"&gt;
&lt;div class="line"&gt;x' = 2x&lt;/div&gt;
&lt;div class="line"&gt;y' = 2y + 1/2&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This question is to figure out how to make a rectangle from (0,0) to (2,3) fit into a square that is from (0,0) to (12,12).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(10 pts)&lt;/em&gt; Consider a pinhole camera as discussed in slide 12 of ppt
presentation 1_5.  Let d=2.  To where does the point (1,3,-3)
project?  Use the equation on that slide.  x/z/d should be
parenthesized as x/(z/d).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(5)&lt;/em&gt;   If your image has only 64 different colors across the whole image, how many bits per pixel do you need for the color buffer?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(25)&lt;/em&gt; Extend your program from last week that displays the Starship Enterprise as follows:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Add 3 sliders that will rotate it around the X-axis, Y-axis, and Z-axis respectively.&lt;/li&gt;
&lt;li&gt;Do the rotations the simplest (and least efficient) way.  I.e., in your javascript program, have render rotate the matrix and resend it to the GPU.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;(Total: 50 points.)&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</description><category>homework</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/homework3/</guid><pubDate>Thu, 06 Sep 2018 04:00:00 GMT</pubDate></item></channel></rss>