<?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 2017, Rensselaer Polytechnic Institute</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/</link><description>course web site</description><atom:link href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/rss.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Wed, 26 Sep 2018 20:40:03 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>CG Grade computation, Wed 2017-12-20</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/grades/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;p&gt;Grade computation:&lt;/p&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;Normalize each homework to have the same number of points.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Add the top 6 homeworks, and normalize to 25%.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Normalize midterm to 25%.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;For term project: project itself, writeup and video, is normalized to 80%.  Two progress reports are each 10%.   Add them to make 100% for the project.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Normalize that project score to 25%.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Normalize final exam to 25%.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Add normalized homeworks, midterm, project, final to make 100%.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Add knowitall points (7 students got total 10 points).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Ameliorate the grade cutoffs listed in the syllabus by 2 points.  E.g., A is &amp;gt;=93.0.&lt;/p&gt;
&lt;pre class="literal-block"&gt;
Min        Letter  Count
0  FF      2
48 DD      0
53 DP      0
58 CM      0
63 CC      3
68 CP      1
73 BM      8
78 BB      13
83 BP      13
88 AM      8
93 AA      5
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Final-exam [Total Pts: 60]: 56 56 56 56 56 55 55 55 54 54 54 54 54 54 54 53 53 52 52 52 51 51 51 50 50 50 49 49 49 49 49 49 48 48 47 46 46 45 45 44 44 43 43 42 41 40 40 38 36 35 29 27 24 8&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Course total [Total Pts: 100] 96.8 95.1 95.0 94.9 94.0 92.4 91.5 91.3 91.1 90.7 90.4 89.3 88.9 88.0 87.8 87.5 86.6 86.4 85.6 84.6 84.4 84.2 84.2 84.1 83.7 83.4 82.3 81.9 81.8 81.4 80.2 80.0 79.8 79.4 79.3 78.7 78.6 78.2 78.1 77.8 77.6 77.0 76.5 74.8 74.3 73.6 73.3 71.6 66.9 65.8 63.9 43.0 38.4 35.3 34.9 31.6 30.6 26.6 25.5&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;</description><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/grades/</guid><pubDate>Wed, 20 Dec 2017 05:00:00 GMT</pubDate></item><item><title>CG ECSE-4750 Computer Graphics Final Exam Solution, RPI, Mon 2017-12-18</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/finalexam-sol/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;p&gt;Name, RCSID:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WRF solutions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Rules:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;You have 180 minutes.&lt;/li&gt;
&lt;li&gt;You may bring in two 2-sided 8.5"x11" papers with notes.&lt;/li&gt;
&lt;li&gt;You may not share material with each other during the exam.&lt;/li&gt;
&lt;li&gt;No collaboration or communication (except with the staff) is allowed.&lt;/li&gt;
&lt;li&gt;There are 30 questions.  Check that your copy of this test has all the pages.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Questions:&lt;/p&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Put these graphics pipeline components in the correct order:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;fragment-shader&lt;/li&gt;
&lt;li&gt;primitive-assembly&lt;/li&gt;
&lt;li&gt;rasterizer&lt;/li&gt;
&lt;li&gt;vertex-shader&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;answer:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;vertex-shader&lt;/li&gt;
&lt;li&gt;primitive-assembly&lt;/li&gt;
&lt;li&gt;rasterizer&lt;/li&gt;
&lt;li&gt;fragment-shader&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; If you do not tell OpenGL to do hidden surface removal, and depth buffer is not in use, and two  objects overlap the same pixel, then what color is that pixel?&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;OpenGL throws an error.&lt;/li&gt;
&lt;li&gt;the closer object&lt;/li&gt;
&lt;li&gt;the farther object&lt;/li&gt;
&lt;li&gt;the first object to be drawn there&lt;/li&gt;
&lt;li&gt;the last object to be drawn there&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;answer:&lt;/p&gt;
&lt;ol class="upperalpha simple" start="5"&gt;
&lt;li&gt;the last object to be drawn there&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What is the purpose of &lt;em&gt;vNormaljs&lt;/em&gt; in this line of code?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;var vNormaljs = gl.getAttribLocation( program, "vNormal" );&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's the name of a shader attribute variable.  getAttribLocation returns its location.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; There is an aliasing problem when raytracing objects that are so small that one ray sent through the center of a pixel might go to the left of the object, and the next ray, through the center of the next pixel, go to its right.     Give two ways to modify ray tracing to lessen this problem.&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;randomize the position of the ray in each pixel.&lt;/li&gt;
&lt;li&gt;fire several rays through each pixel and average.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Bezier curves do not generally go through the their control points, except for the first and last control points.   It would be quite easy to design a curve fitting system so that the curve goes through all the control points.   However the CAD community has decided that they don't want this.  Why?&lt;/p&gt;
&lt;p&gt;The curve will swing outside the control polygon by a nonintuitive amount.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; In a fragment shader, a sampler2D does something more than a simple array lookup like you have in most programming languages.  What?&lt;/p&gt;
&lt;p&gt;When the subscript is fractional, this will interpolate between the values of the adjacent texels.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Tell me about &lt;em&gt;view normalization&lt;/em&gt;.  What is it?   What is good about it?&lt;/p&gt;
&lt;p&gt;Transforms the universe, including the object, clip region, and projection, to make the clip region a 2x2x2 cube and the projection (x,y,z) -&amp;gt; (x,y,0).&lt;/p&gt;
&lt;p&gt;Clipping and projection are now easier.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; The last big update in the OpenGL standard removed many things from the standard.  Name two things that we've discussed in class that we now have to implement ourselves if we wish to use.&lt;/p&gt;
&lt;p&gt;Lighting.  Fog.  Etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt;  Consider this 2D homogeneous point:  &lt;em&gt;(2,3,4)&lt;/em&gt;.   Rotate it by 90 degrees.  What is the resulting point, in a Cartesian representation?&lt;/p&gt;
&lt;p&gt;Cart: (1/2, 3/4).   Cart rotation matrix:  (0, -1 ; 1, 0).  Rotated point: (-3/4, 1/2).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What is the 3x3 2D homogeneous matrix for a rotation by 90 degrees?&lt;/p&gt;
&lt;p&gt;(0, -1, 0  ; 1, 0, 0; 0, 0, 1)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Compute the projection equations when the viewpoint is at (0,0,0) and the projection plane is x+2y+2z=4.   Use Cartesian coordinates.   You do not need to put the result into a matrix form, but simplify your result as much as possible.&lt;/p&gt;
&lt;p&gt;Projected point is a scaled version of input point.&lt;/p&gt;
&lt;p&gt;x' = x * 4/ (x+2y+2z)&lt;/p&gt;
&lt;p&gt;y' = y * 4/ (x+2y+2z)&lt;/p&gt;
&lt;p&gt;z' = z * 4/ (x+2y+2z)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Using homogeneous coordinates for spline control points gives the designer an extra tool.  What happens to the curve when the designer changes the weight in a homogeneous control point?&lt;/p&gt;
&lt;p&gt;That attracts the nearby part of the curve closer to that point.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Why are the Bresenham line and circle drawing algorithms less useful now?&lt;/p&gt;
&lt;p&gt;Now, HW is faster and has floating point.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; 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.&lt;/p&gt;
&lt;p&gt;Normals, texture coordinates, colors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Given a=(3, 4, 5) compute a matrix M so that, for any p,    (a ⋅ p) a  = M p&lt;/p&gt;
&lt;p&gt;Mij = ai*aj.&lt;/p&gt;
&lt;p&gt;M = (9 12 15; 12 16 20; 15 20 25)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Before memory was cheap enough for depth buffers to be practical, one hidden surface technique involved sorting the objects by distance and then drawing them into the color buffer back-to-front.&lt;/p&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;Name this method.&lt;/p&gt;
&lt;p&gt;Painters algorithm.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Describe one complexity with implementing it.&lt;/p&gt;
&lt;p&gt;When 2 objects have close Z values,  it's impossible to tell which to draw first.   A really bad case is 3 interlocking objects.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; In a shader, what is the difference between a uniform variable and a varying variable?&lt;/p&gt;
&lt;p&gt;Uniform: same value for all vertices.  E.g., light position.&lt;/p&gt;
&lt;p&gt;Varying: computed in vertex shader.  Interpolated by rasterizer.  Input to fragment shader.  E.g. color.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; In this code to compute diffuse lighting:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;float intensity = max(0.0, dot(N, normalize(L)));&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;where is the light source when &lt;em&gt;max&lt;/em&gt; makes a difference?&lt;/p&gt;
&lt;p&gt;Behind face.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Given a sphere of radius one, what's the normal to the surface at the point (0,0,1)?&lt;/p&gt;
&lt;p&gt;(0,0,1)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt;  3D clipping is usually implemented with six stages of a viewing pipeline.  What are those 6 stages?&lt;/p&gt;
&lt;p&gt;Clip against a top plane, bottom plane, front plane, back plane, left plane, then right plane.  (Order doesn't matter).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What causes some people to be tetrachromats?&lt;/p&gt;
&lt;p&gt;Two different versions of the green cone, most sensitive to 2 different wavelengths, gene on two X chromosones.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Give 2 reasons why we usually use a sequence of low-degree curves instead of one high degree curve.&lt;/p&gt;
&lt;p&gt;Local control.&lt;/p&gt;
&lt;p&gt;More numerically stable (less roundoff error).&lt;/p&gt;
&lt;p&gt;Curve is more intuitive - small control point changes don't cause big curve changes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What does the word &lt;em&gt;rational&lt;/em&gt; mean in NURBS?&lt;/p&gt;
&lt;p&gt;homogeneous.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What might clipping do to the number of vertices?&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;The number of vertices might stay the same or reduce but not grow.&lt;/li&gt;
&lt;li&gt;The number of vertices might stay the same or grow but not reduce.&lt;/li&gt;
&lt;li&gt;The number of vertices might stay the same or grow or reduce.&lt;/li&gt;
&lt;li&gt;The number of vertices must stay the same.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The number of vertices might stay the same or grow or reduce.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What is the difference between &lt;em&gt;Phong&lt;/em&gt; shading and &lt;em&gt;Gouraud&lt;/em&gt; shading?&lt;/p&gt;
&lt;p&gt;Phong: input: normal at each vertex.  interpolate them for each fragment.  compute lighting at each fragment.&lt;/p&gt;
&lt;p&gt;Gouraud: input: normal at each vertex.  compute lighting at each vertex. Or, input lighting at each vertex.  interpolate lighting for each fragment.&lt;/p&gt;
&lt;p&gt;Gouraud faster but not as realistic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What does it mean to separate the &lt;em&gt;geometry&lt;/em&gt; from the &lt;em&gt;topology&lt;/em&gt; when building a model?&lt;/p&gt;
&lt;p&gt;geometry is the vertex position.&lt;/p&gt;
&lt;p&gt;topology is which vertices define each edge and face.&lt;/p&gt;
&lt;p&gt;separate means to store them in separate arrays.  Each vertex is stored only once.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&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;p&gt;No since lengths don't change since rotations are rigid.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What does this do:&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;gl.vertexAttribPointer( vNormal, 3, gl.FLOAT, false, 0, 0 );&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tells GPU that the array of bytes storing the vertex normals
is to be interpreted as groups of 3 floats per normal.
vNormal is the address of the shader attribute variable for
the normal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What does this JS line do?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;document.getElementById("ButtonX").onclick = function(){axis = xAxis;};&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;defines a callback for a button.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt;   Where is the 3D homogeneous1point (1,0,0,0)?&lt;/p&gt;
&lt;p&gt;at infinity in the direction (1,0,0).&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;End of final exam&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</description><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/finalexam-sol/</guid><pubDate>Mon, 18 Dec 2017 05:00:00 GMT</pubDate></item><item><title>CG ECSE-4750 Computer Graphics Final Exam, RPI, Mon 2017-12-18</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/finalexam/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;p&gt;Name, RCSID:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.




.
&lt;/pre&gt;
&lt;p&gt;Rules:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;You have 180 minutes.&lt;/li&gt;
&lt;li&gt;You may bring in two 2-sided 8.5"x11" papers with notes.&lt;/li&gt;
&lt;li&gt;You may not share material with each other during the exam.&lt;/li&gt;
&lt;li&gt;No collaboration or communication (except with the staff) is allowed.&lt;/li&gt;
&lt;li&gt;There are 30 questions.  Check that your copy of this test has all the pages.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Questions:&lt;/p&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Put these graphics pipeline components in the correct order:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;fragment-shader&lt;/li&gt;
&lt;li&gt;primitive-assembly&lt;/li&gt;
&lt;li&gt;rasterizer&lt;/li&gt;
&lt;li&gt;vertex-shader&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="literal-block"&gt;
.



.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; If you do not tell OpenGL to do hidden surface removal, and depth buffer is not in use, and two  objects overlap the same pixel, then what color is that pixel?&lt;/p&gt;
&lt;ol class="upperalpha simple"&gt;
&lt;li&gt;OpenGL throws an error.&lt;/li&gt;
&lt;li&gt;the closer object&lt;/li&gt;
&lt;li&gt;the farther object&lt;/li&gt;
&lt;li&gt;the first object to be drawn there&lt;/li&gt;
&lt;li&gt;the last object to be drawn there&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="literal-block"&gt;
.

.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What is the purpose of &lt;em&gt;vPosition&lt;/em&gt; in this line of code?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;var vNormaljs = gl.getAttribLocation( program, "vNormal" );&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; There is an aliasing problem when raytracing objects that are so small that one ray sent through the center of a pixel might go to the left of the object, and the next ray, through the center of the next pixel, go to its right.     Give two ways to modify ray tracing to lessen this problem.&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Bezier curves do not generally go through the their control points, except for the first and last control points.   It would be quite easy to design a curve fitting system so that the curve goes through all the control points.   However the CAD community has decided that they don't want this.  Why?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; In a fragment shader, a sampler2D does something more than a simple array lookup like you have in most programming languages.  What?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Tell me about &lt;em&gt;view normalization&lt;/em&gt;.  What is it?   What is good about it?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.











.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;(2 pts)&lt;/em&gt; The last big update in the OpenGL standard removed many things from the standard.  Name two things that we've discussed in class that we now have to implement ourselves if we wish to use.&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt;  Consider this 2D homogeneous point:  &lt;em&gt;(2,3,4)&lt;/em&gt;.   Rotate it by 90 degrees.  What is the resulting point, in a Cartesian representation?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What is the 3x3 2D homogeneous matrix for a rotation by 90 degrees?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Compute the projection equations when the viewpoint is at (0,0,0) and the projection plane is x+2y+2z=4.   Use Cartesian coordinates.   You do not need to put the result into a matrix form, but simplify your result as much as possible.&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Using homogeneous coordinates for spline control points gives the designer an extra tool.  What happens to the curve when the designer changes the weight in a homogeneous control point?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Why are the Bresenham line and circle drawing algorithms less useful now?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; 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.&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Given a=(3, 4, 5) compute a matrix M so that, for any p,    (a ⋅ p) a  = M p&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Before memory was cheap enough for depth buffers to be practical, one hidden surface technique involved sorting the objects by distance and then drawing them into the color buffer back-to-front.&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Name this method.&lt;/li&gt;
&lt;li&gt;Describe one complexity with implementing it.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; In a shader, what is the difference between a uniform variable and a varying variable?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; In this code to compute diffuse lighting:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;float intensity = max(0.0, dot(N, normalize(L)));&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;where is the light source when &lt;em&gt;max&lt;/em&gt; makes a difference?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Given a sphere of radius one, what's the normal to the surface at the point (0,0,1)?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt;  3D clipping is usually implemented with six stages of a viewing pipeline.  What are those 6 stages?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What causes some people to be tetrachromats?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; Give 2 reasons why we usually use a sequence of low-degree curves instead of one high degree curve.&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What does the word &lt;em&gt;rational&lt;/em&gt; mean in NURBS?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What might clipping do to the number of vertices?&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;The number of vertices might stay the same or reduce but not grow.&lt;/li&gt;
&lt;li&gt;The number of vertices might stay the same or grow but not reduce.&lt;/li&gt;
&lt;li&gt;The number of vertices might stay the same or grow or reduce.&lt;/li&gt;
&lt;li&gt;The number of vertices must stay the same.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="literal-block"&gt;
.




.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What is the difference between &lt;em&gt;Phong&lt;/em&gt; shading and &lt;em&gt;Gouraud&lt;/em&gt; shading?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What does it mean to separate the &lt;em&gt;geometry&lt;/em&gt; from the &lt;em&gt;topology&lt;/em&gt; when building a model?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&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;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What does this do:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;gl.vertexAttribPointer( vNormal, 3, gl.FLOAT, false, 0, 0 );&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt; What does this JS line do?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;document.getElementById("ButtonX").onclick = function(){axis = xAxis;};&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;em&gt;_____/2&lt;/em&gt;   Where is the 3D homogeneous1point (1,0,0,0)?&lt;/p&gt;
&lt;pre class="literal-block"&gt;
.








.
&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;End of final exam&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;</description><category>mathjax</category><category>misc</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/finalexam/</guid><pubDate>Sun, 17 Dec 2017 05:00:00 GMT</pubDate></item><item><title>CG Class 36, Thurs 2017-12-14</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class36/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;!--  --&gt;
&lt;p&gt;Review for final exam.&lt;/p&gt;
&lt;p&gt;This will be in &lt;strong&gt;DCC 318&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2016/posts/finalexam/"&gt;Fall 2016 final exam&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/files/handwritten/1214.pdf"&gt;Today's tablet notes&lt;/a&gt; &lt;em&gt;(corrected)&lt;/em&gt;.&lt;/p&gt;&lt;/div&gt;</description><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class36/</guid><pubDate>Thu, 14 Dec 2017 05:00:00 GMT</pubDate></item><item><title>CG Class 35, Wed 2017-12-13</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class35/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;!--  --&gt;
&lt;p&gt;Student videos, part 2/2.&lt;/p&gt;&lt;/div&gt;</description><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class35/</guid><pubDate>Wed, 13 Dec 2017 05:00:00 GMT</pubDate></item><item><title>CG Class 34, Mon 2017-12-12</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class34/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;!--  --&gt;
&lt;p&gt;Student videos, part 1/2.&lt;/p&gt;&lt;/div&gt;</description><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class34/</guid><pubDate>Tue, 12 Dec 2017 05:00:00 GMT</pubDate></item><item><title>CG Class 33, Thurs 2017-12-07</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class33/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;div class="contents topic" id="table-of-contents"&gt;
&lt;p class="topic-title first"&gt;Table of contents::&lt;/p&gt;
&lt;ul class="auto-toc simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class33/#chapter-15" id="id1"&gt;1   Chapter 15&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!--  --&gt;
&lt;div class="section" id="chapter-15"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class33/#id1"&gt;1   Chapter 15&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK15/Angel_UNM_14_15_1.ppt"&gt;15_1 Global rendering&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK15/Angel_UNM_14_15_2.ppt"&gt;15_2 Ray tracing&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK15/Angel_UNM_14_15_3.ppt"&gt;15_3 What's next?&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Rendering_(computer_graphics"&gt;https://en.wikipedia.org/wiki/Rendering_(computer_graphics&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ray_tracing_(graphics"&gt;https://en.wikipedia.org/wiki/Ray_tracing_(graphics&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://en.wikipedia.org/wiki/Ray_casting"&gt;https://en.wikipedia.org/wiki/Ray_casting&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;/div&gt;</description><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class33/</guid><pubDate>Thu, 07 Dec 2017 05:00:00 GMT</pubDate></item><item><title>CG Class 32, Mon 2017-12-04</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class32/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;div class="contents topic" id="table-of-contents"&gt;
&lt;p class="topic-title first"&gt;Table of contents::&lt;/p&gt;
&lt;ul class="auto-toc simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class32/#spring-parallel-computing-course" id="id1"&gt;1   Spring parallel computing course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class32/#term-project-videos" id="id2"&gt;2   Term project videos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class32/#webgl-query" id="id3"&gt;3   WebGL query&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class32/#chapter-14-ctd" id="id4"&gt;4   Chapter 14 ctd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class32/#handwritten-notes-from-class" id="id5"&gt;5   Handwritten notes from class&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!--  --&gt;
&lt;div class="section" id="spring-parallel-computing-course"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class32/#id1"&gt;1   Spring parallel computing course&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;ECSE-4740 Engineering Parallel Computing welcomes students
wanting to learn state-of-the-art parallel computing facilities
that is also affordable.  That is, multicore Intel Xeon and
Nvidia GPU.&lt;/p&gt;
&lt;p&gt;Qualified students from any department are welcome.  You will
learn things that will be useful in your work.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="term-project-videos"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class32/#id2"&gt;2   Term project videos&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Per the syllabus, one deliverable for your term project is a 3-minute video to be shown in class.&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;This is one video per team.&lt;/li&gt;
&lt;li&gt;The actual length can be anywhere from 2 to 3 minutes.&lt;/li&gt;
&lt;li&gt;The class days are next Mon at 4 in DCC and next Wed at 6 in the lab.&lt;/li&gt;
&lt;li&gt;We will show up to 20 videos per day.&lt;/li&gt;
&lt;li&gt;If you prefer one day to the other, then email both Mou and Qiushi with your choice.   First come, first served.&lt;/li&gt;
&lt;li&gt;Make the subject of your email &lt;strong&gt;CG Term Project Video Schedule&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Send one email per team, and mention everyone's name.&lt;/li&gt;
&lt;li&gt;Email your video (or a downloadable link to it) to  both Mou and Qiushi by the end of Dec 8.  (This is a day later than the date in the syllabus.)   They will combine them into one dir available for showing.&lt;/li&gt;
&lt;li&gt;Please ensure that your video is easy to play; we have 4 minutes per video including setup time, showing, and questions.&lt;/li&gt;
&lt;li&gt;I look forward to seeing what fun things people have done.&lt;/li&gt;
&lt;li&gt;What the video should cover:&lt;ol class="arabic"&gt;
&lt;li&gt;show that the features your doc describes actually work.&lt;/li&gt;
&lt;li&gt;show how to use it.&lt;/li&gt;
&lt;li&gt;describe any difficulties you had.&lt;/li&gt;
&lt;li&gt;describe major design decisions.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="webgl-query"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class32/#id3"&gt;3   WebGL query&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Victor Calvert writes,&lt;/p&gt;
&lt;p&gt;The &lt;a class="reference external" href="http://webglreport.com/"&gt;WebGL report&lt;/a&gt; shows
current-environment specifics, including the maximum number of
textures, maximum framebuffer resolution, and other information,
retrieved via the WebGL API.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="chapter-14-ctd"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class32/#id4"&gt;4   Chapter 14 ctd&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;See notes from last class.&lt;/p&gt;
&lt;p&gt;The last slide set we saw was 14_1.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="handwritten-notes-from-class"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class32/#id5"&gt;5   Handwritten notes from class&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/files/handwritten/1204.pdf"&gt;Here&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</description><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class32/</guid><pubDate>Sun, 03 Dec 2017 05:00:00 GMT</pubDate></item><item><title>CG Class 31, Thurs 2017-11-30</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class31/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;div class="contents topic" id="table-of-contents"&gt;
&lt;p class="topic-title first"&gt;Table of contents::&lt;/p&gt;
&lt;ul class="auto-toc simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class31/#spring-parallel-computing-course" id="id1"&gt;1   Spring parallel computing course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class31/#visibility-methods" id="id2"&gt;2   Visibility methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class31/#more-comments-on-clipping" id="id3"&gt;3   More comments on clipping&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class31/#chapter-13-slides-ctd" id="id4"&gt;4   Chapter 13 slides ctd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class31/#chapter-14" id="id5"&gt;5   Chapter 14&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!--  --&gt;
&lt;div class="section" id="spring-parallel-computing-course"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class31/#id1"&gt;1   Spring parallel computing course&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;ECSE-4740 Engineering Parallel Computing welcomes students
wanting to learn state-of-the-art parallel computing facilities
that is also affordable.  That is, multicore Intel Xeon and
Nvidia GPU.&lt;/p&gt;
&lt;p&gt;Qualified students from any department are welcome.  You will
learn things that will be useful in your work.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="visibility-methods"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class31/#id2"&gt;2   Visibility methods&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;em&gt;Painters:&lt;/em&gt;&lt;ol class="arabic"&gt;
&lt;li&gt;The painter's algorithm is tricky when faces are close in Z.&lt;/li&gt;
&lt;li&gt;Sorting the faces is hard and maybe impossible.  Then you must split
some faces.&lt;/li&gt;
&lt;li&gt;However sometimes some objects are always in front of some other
objects.  Then you can render the background before the foreground.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Z-buffer:&lt;/em&gt;&lt;ol class="arabic"&gt;
&lt;li&gt;Subpixel objects randomly appear and disappear (aliasing).&lt;/li&gt;
&lt;li&gt;Artifacts occur when objects are closer than their Z-extent across one
pixel.&lt;/li&gt;
&lt;li&gt;This happens on the edge where two faces meet.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;BSP tree:&lt;/em&gt;&lt;ol class="arabic"&gt;
&lt;li&gt;In 3D, many faces must be split to build the tree.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;The scanline algorithm can feed data straight to the video D/A.  That was
popular decades ago before frame buffers existed.  It is popular again
when frame buffers are the slowest part of the pipeline.&lt;/li&gt;
&lt;li&gt;A real implementation, with a moving foreground and fixed background,
might combine techniques.&lt;/li&gt;
&lt;li&gt;References: wikipedia.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="more-comments-on-clipping"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class31/#id3"&gt;3   More comments on clipping&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Many of these algorithms were developed for HW w/o floating point, where
even integer multiplication was expensive.&lt;/li&gt;
&lt;li&gt;Efficiency is now less important in most cases (unless you're implementing in HW).&lt;/li&gt;
&lt;li&gt;The idea of clipping with a 6-stage pipeline is an important.&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://en.wikipedia.org/wiki/James_H._Clark"&gt;Jim Clark&lt;/a&gt;, a prof at
Stanford, made a 12-stage pipeline using 12 copies of the same chip, and
then left Stanford to found SGI.&lt;ol class="arabic"&gt;
&lt;li&gt;Later he bankrolled Netscape and 2 other companies.&lt;/li&gt;
&lt;li&gt;More recently he had the world's &lt;a class="reference external" href="http://www.forbes.com/sites/ryanmac/2012/05/15/billionaire-jim-clark-seeks-more-than-100-million-for-two-superyachts/"&gt;4th largest yacht&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="chapter-13-slides-ctd"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class31/#id4"&gt;4   Chapter 13 slides ctd&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK13/Angel_UNM_14_13_3.ppt"&gt;13_3 Rasterization&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;My note on &lt;a class="reference external" href="http://www.ecse.rpi.edu/~wrf/Research/Short_Notes/bresenham.html"&gt;Bresenham Line and Circle Drawing&lt;/a&gt;.  Jack
Bresenham, then at IBM invented these very fast ways to draw lines and
circles with only integer addition and subtraction.  My note gives
step-by-step derivations by transforming slow and clear programs to fast and
obscure programs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;My note on &lt;a class="reference external" href="http://www.ecse.rpi.edu/~wrf/Research/Short_Notes/polyfill.html"&gt;Two polygon filling algorithms&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK13/Angel_UNM_14_13_4.ppt"&gt;13_4 Display issues&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We've seen some of this.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="chapter-14"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class31/#id5"&gt;5   Chapter 14&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;Curves are the next chapter of Angel.  WebGL does this worse than full OpenGL.  Here is a summary.
Big questions:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;What math to use?&lt;/li&gt;
&lt;li&gt;How should the designer design a curve?&lt;/li&gt;
&lt;li&gt;My notes on &lt;a class="reference external" href="http://www.ecse.rpi.edu/~wrf/Teaching/graphics-f2016/bezier.pdf"&gt;Bezier curves&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Partial summary:&lt;/p&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;To represent curves, use parametric (not explicit or implicit) equations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Use connected strings or segments of low-degree curves, not one hi-degree curve.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;If the adjacent segments match tangents and curvatures at their common joint, then the joint is invisible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;That requires at least cubic equations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Higher degree equations are rarely used because they have bad properties such as:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;less local control,&lt;/li&gt;
&lt;li&gt;numerical instability (small changes in coefficients cause large changes in the curve),&lt;/li&gt;
&lt;li&gt;roundoff error.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;See my note on &lt;a class="reference external" href="http://www.ecse.rpi.edu/~wrf/pmwiki/Research/HiDegreePolynomials"&gt;Hi Degree Polynomials&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;One 2D cartesian parametric cubic curve segment has 8 d.f.&lt;/p&gt;
&lt;p&gt;&lt;span class="math"&gt;\(x(t) = \sum_{i=0}^3 a_i t^i\)&lt;/span&gt;,&lt;/p&gt;
&lt;p&gt;&lt;span class="math"&gt;\(y(t) = \sum_{i=0}^3 b_i t^i\)&lt;/span&gt;, for &lt;span class="math"&gt;\(0\le t\le1\)&lt;/span&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Requiring the graphic designer to enter those coefficients would be
unpopular, so other APIs are common.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Most common is the &lt;em&gt;Bezier&lt;/em&gt; formulation, where the segment is
specified by 4 control points, which also total 8 d.f.: P0, P1, P2, and
P3.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;The generated curve starts at P0, goes near P1 and P2, and ends at P3.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;The curve stays inside the control polygon, the convex hull of the
control points.  A flatter control polygon means a flatter curve.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;A choice not taken would be to have the generated curve also go thru P2
and P3.  That's called a Catmull-Rom-Oberhauser curve.  However that
would force the curve to go outside the control polygon by a
nonintuitive amount.  That is considered undesirable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Instead of 4 control points, a parametric cubic curve can also be specified by a
starting point and tangent, and an ending point and tangent.  That also
has 8 d.f.  It's called a Hermite curve.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;The three methods (polynomial, Bezier, Hermite) are easily interconvertible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Remember that we're using connected strings or segments of cubic
curves, and if the adjacent segments match tangents and curvatures at
their common joint, then the joint is invisible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;That reduces each successive segment from 8 d.f. down to 2 d.f.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;This is called a B-spline.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;From a sequence of control points we generate a B-spline curve that is
piecewise cubic and goes near, but probably not thru, any control point
(except perhaps the ends).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Moving one control point moves the adjacent few spline pieces.  That is
called &lt;em&gt;local control&lt;/em&gt;.  Designers like it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;One spline segment can be replaced by two spline segments that,
together, exactly draw the same curve.  However they, together, have
more control points for the graphic designer to move individually.  So
now the designer can edit smaller pieces of the total spline.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Extending this from 2D to 3D curves is obvious.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Extending to homogeneous coordinates is obvious.  Increasing a control
point's weight attracts the nearby part of the spline.  This is called
a &lt;em&gt;rational&lt;/em&gt; spline.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Making two control points coincide means that the curvature will not be
continuous at the adjacent joint.&lt;/p&gt;
&lt;p&gt;Making &lt;em&gt;three&lt;/em&gt; control points coincide means that the &lt;em&gt;tangent&lt;/em&gt;
will not be continuous at the adjacent joint.&lt;/p&gt;
&lt;p&gt;Making &lt;em&gt;four&lt;/em&gt; control points coincide means that the &lt;em&gt;curve&lt;/em&gt; will
not be continuous at the adjacent joint.&lt;/p&gt;
&lt;p&gt;Doing this is called making the curve (actually the knot sequence)
&lt;em&gt;Non-uniform&lt;/em&gt;.  (The knots are the values of the parameter for the joints.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Putting all this together gives a non-uniform rational B-spline, or a &lt;em&gt;NURBS&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;A B-spline &lt;em&gt;surface&lt;/em&gt; is a grid of patches, each a bi-cubic parametric polynomial.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Each patch is controlled by a 4x4 grid of control points.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;When adjacent patches match tangents and curvatures, the joint edge is invisible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;The surface math is an obvious extension of the curve math.&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;span class="math"&gt;\(x(u,v) = \sum_{i=0}^3\sum_{j=0}^3 a_{ij} u^i v^j\)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="math"&gt;\(y, z\)&lt;/span&gt; are similar.&lt;/li&gt;
&lt;li&gt;One patch has 48 d.f. for Cartesian points, or 64 d.f. for homogeneous points, although most of those are used to establish
continuity with adjacent patches.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;My extra enrichment info on &lt;a class="reference external" href="//www.ecse.rpi.edu/~wrf/pmwiki/Research/Splines"&gt;Splines&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;The program I showed yesterday is robotArm is  &lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/CODE/Code%20new/09/"&gt;Chapter 9&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;To run program figure there, you first need to fix an error in figure.html.  Change &lt;em&gt;InitShaders&lt;/em&gt; to &lt;em&gt;initShaders&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Many of the textbook programs have errors that prevent them from running.   You can see them in the console log.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;I have an Oculus Rift DK2, if anyone would like to borrow it.   It's a little old but may be interesting.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK14/Angel_UNM_14_14_1.ppt"&gt;14_1 Curves and surfaces&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Programs drawing the &lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/CODE/11/"&gt;Utah teapot&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK14/Angel_UNM_14_14_2.ppt"&gt;14_2 Designing parametric cubic curves&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK14/Angel_UNM_14_14_3.ppt"&gt;14_3 Bezier and spline curves and surfaces&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK14/Angel_UNM_14_14_4.ppt"&gt;14_4 Rendering curves and surfaces&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK14/Angel_UNM_14_14_5.ppt"&gt;14_5 Rendering the teapot&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;You do not need to learn most of those slides.  Later I'll summarize what you need.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK15/Angel_UNM_14_15_1.ppt"&gt;15_1 Global rendering&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK15/Angel_UNM_14_15_2.ppt"&gt;15_2 Ray tracing&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK15/Angel_UNM_14_15_3.ppt"&gt;15_3 What's next?&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;/div&gt;</description><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class31/</guid><pubDate>Tue, 28 Nov 2017 05:00:00 GMT</pubDate></item><item><title>CG Class 30, Mon 2017-11-27</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class30/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;div class="contents topic" id="table-of-contents"&gt;
&lt;p class="topic-title first"&gt;Table of contents::&lt;/p&gt;
&lt;ul class="auto-toc simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class30/#thanksgiving-trivia-questions" id="id1"&gt;1   Thanksgiving trivia questions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class30/#videos" id="id2"&gt;2   Videos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class30/#chapter-12-slides-ctd" id="id3"&gt;3   Chapter 12 slides ctd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class30/#chapter-13-slides" id="id4"&gt;4   Chapter 13 slides&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!--  --&gt;
&lt;div class="section" id="thanksgiving-trivia-questions"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class30/#id1"&gt;1   Thanksgiving trivia questions&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;When the native American Squanto greeted the Pilgrims in March 1621, what language did he use?&lt;/li&gt;
&lt;li&gt;Where had he learned it?&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="videos"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class30/#id2"&gt;2   Videos&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="http://www.youtube.com/watch?v=uTxa7eA9Fdk"&gt;3D Object Manipulation&lt;/a&gt; in a Single Photograph using Stock 3D Models (Siggraph 2014).&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="http://www.cs.cmu.edu/~om3d/"&gt;From here&lt;/a&gt; Photo-editing software restricts the control of objects in a photograph to the 2D image plane. We present a method that enables users to perform the full range of 3D manipulations, including scaling, rotation, translation, and nonrigid deformations, to an object in a photograph. As 3D manipulations often reveal parts of the object that are hidden in the original photograph, our approach uses publicly available 3D models to guide the completion of the geometry and appearance of the revealed areas of the object. The completion process leverages the structure and symmetry in the stock 3D model to factor out the effects of illumination, and to complete the appearance of the object. We demonstrate our system by producing object manipulations that would be impossible in traditional 2D photo-editing programs, such as turning a car over, making a paper-crane flap its wings, or manipulating airplanes in a historical photograph to change its story.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="chapter-12-slides-ctd"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class30/#id3"&gt;3   Chapter 12 slides ctd&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK12/Angel_UNM_14_12_5.ppt"&gt;12_5  Rendering overview&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;At this point we've learned enough WebGL.  The course now switches to learn the fundamental graphics algorithms used in the &lt;em&gt;rasterizer&lt;/em&gt; stage of the pipeline.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="chapter-13-slides"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class30/#id4"&gt;4   Chapter 13 slides&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK13/Angel_UNM_14_13_1.ppt"&gt;13_1 Clipping&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A lot of the material in the clipping slides is obsolete because machines are faster now.   However perhaps the rendering is being done on a small coprocessor.&lt;/p&gt;
&lt;p&gt;Big idea (first mentioned on Oct 20): Given any orthogonal projection and clip volume, we transform the object so that we can view the new object with projection (x,y,z) -&amp;gt; (x,y,0) and clip volume (-1,-1,-1) to (1,1,1) &lt;strong&gt;and get the same image&lt;/strong&gt;.  That's a &lt;strong&gt;normalization transformation&lt;/strong&gt;'.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/PPT/WEEK13/Angel_UNM_14_13_2.ppt"&gt;13_2 Polygon rendering&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;/div&gt;</description><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2017/posts/class30/</guid><pubDate>Mon, 27 Nov 2017 05:00:00 GMT</pubDate></item></channel></rss>