<?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 class)</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/class.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 Class 30, Wed 2018-12-12</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class30/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;p&gt;Review before final exam.&lt;/p&gt;
&lt;!-- used up to 2017 class 31, some of 32 --&gt;&lt;/div&gt;</description><category>class</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class30/</guid><pubDate>Tue, 11 Dec 2018 05:00:00 GMT</pubDate></item><item><title>CG Class 29, Mon 2018-12-10</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class29/</link><dc:creator>W Randolph Franklin, RPI</dc:creator><description>&lt;div&gt;&lt;div class="section" id="presentation-of-student-videos"&gt;
&lt;h2&gt;Presentation of student videos&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="section" id="review"&gt;
&lt;h2&gt;Review?&lt;/h2&gt;
&lt;p&gt;Do you want a review in the Wed lab session?&lt;/p&gt;
&lt;!-- used up to 2017 class 31, some of 32 --&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>class</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class29/</guid><pubDate>Sun, 09 Dec 2018 05:00:00 GMT</pubDate></item><item><title>CG Class 28, Thurs 2018-12-06</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class28/</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-f2018/posts/class28/#siggraph-2018-videos" id="id1"&gt;1   SIGGRAPH 2018 Videos&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="siggraph-2018-videos"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class28/#id1"&gt;1   SIGGRAPH 2018 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="https://www.youtube.com/watch?v=X-jqwZRQVmQ"&gt;Takeaways From SIGGRAPH 2018&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://techgage.com/article/takeaways-from-an-action-packed-siggraph-2018/"&gt;Article&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://www.youtube.com/watch?v=t952yS8tcg8"&gt;Technical Papers Preview&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://www.youtube.com/watch?v=x8Fo2slT2WA"&gt;Advanced Molecular &amp;amp; Particle Physics Simulations&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://www.youtube.com/watch?v=tjf-1BxpR9c"&gt;NVIDIA RTX and GameWorks Ray Tracing Technology Demonstration&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://www.youtube.com/watch?v=SrF4k6wJ-do"&gt;Beyond Turing - Ray Tracing and the Future of Computer Graphics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://www.youtube.com/watch?v=G5GzWhSgKCE"&gt;Create Realistic Character Animation with Ziva Dynamics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://www.youtube.com/watch?v=xvyGpBKevLM"&gt;A Multi-Scale Model for Simulating Liquid-Fabric Interactions&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;&lt;a class="reference external" href="https://www.youtube.com/watch?v=jY28N0kv7Pk"&gt;NVIDIA CEO Jensen Huang - Reinventing Computer Graphics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;!-- used up to 2017 class 31, some of 32 --&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>class</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class28/</guid><pubDate>Wed, 05 Dec 2018 05:00:00 GMT</pubDate></item><item><title>CG Class 27, Mon 2018-12-03</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class27/</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-f2018/posts/class27/#opengl-in-guha-vs-webgl-in-angel" id="id1"&gt;1   OpenGL in Guha vs WebGL in Angel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class27/#chapter-15-slides" id="id2"&gt;2   Chapter 15 slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class27/#introduction-to-gpus" id="id3"&gt;3   Introduction to GPUs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="opengl-in-guha-vs-webgl-in-angel"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class27/#id1"&gt;1   OpenGL in Guha vs WebGL in Angel&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;Guha, the text I used before Angel, uses OpenGL.  Angel uses WebGL.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;OpenGL has a C API; WebGL uses Javascript.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;That OpenGL is the obsolete version 2; WebGL is based on the current OpenGL 3.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;OpenGL 2 has an immediate mode design: you draw things and they are forgotten.&lt;/p&gt;
&lt;p&gt;In WebGL you send buffers to the GPU and then draw them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;OpenGL has compute shaders and geometry shaders.   They fill in points along Bezier curves and draw trimmed NURBS.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;A NURBS surface is a 2D parametric surface in 3D (or 4D if homogeneous).&lt;/p&gt;
&lt;p&gt;A trim line is a 1D parametric curve in the the 2D parameter space of the surface.&lt;/p&gt;
&lt;p&gt;The trim lines cut around the outside of the desired region and also cut out holes.&lt;/p&gt;
&lt;p&gt;This is a powerful technique.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="chapter-15-slides"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class27/#id2"&gt;2   Chapter 15 slides&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;You do not need to learn most of those slides.  Later I'll summarize what you need.&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_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;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="introduction-to-gpus"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class27/#id3"&gt;3   Introduction to GPUs&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;from &lt;a class="reference external" href="https://www.cs.utexas.edu/~pingali/CS378/2015sp/lectures/IntroGPUs.pdf"&gt;UT Computer Science&lt;/a&gt;&lt;/p&gt;
&lt;!-- used up to 2017 class 31, some of 32 --&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>class</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class27/</guid><pubDate>Sun, 02 Dec 2018 05:00:00 GMT</pubDate></item><item><title>CG Class 26, Thurs 2018-11-29</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class26/</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-f2018/posts/class26/#chapter-14-slides-ctd" id="id1"&gt;1   Chapter 14 slides ctd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class26/#old-opengl-in-c-and-with-nurbs" id="id2"&gt;2   Old OpenGL in C and with NURBS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class26/#webgl-query" id="id3"&gt;3   WebGL query&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="chapter-14-slides-ctd"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class26/#id1"&gt;1   Chapter 14 slides ctd&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/WEEK14/Angel_UNM_14_14_2.ppt"&gt;14_2 Designing parametric cubic curves&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/WEEK14/Angel_UNM_14_14_3.ppt"&gt;14_3 Bezier and spline curves and surfaces&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/WEEK14/Angel_UNM_14_14_4.ppt"&gt;14_4 Rendering curves and surfaces&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/WEEK14/Angel_UNM_14_14_5.ppt"&gt;14_5 Rendering the teapot&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="old-opengl-in-c-and-with-nurbs"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class26/#id2"&gt;2   Old OpenGL in C and with NURBS&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Before Angel, I used another book, Guha.   It used old OpenGL in C.  However therefore it could show NURBS.  Some sample programs are in&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/wiki/ComputerGraphicsFall2013/guha/Code"&gt;https://wrf.ecse.rpi.edu/wiki/ComputerGraphicsFall2013/guha/Code&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Look at bezierCurves, which shows moving control points.&lt;/p&gt;
&lt;p&gt;trimmedBicubicSplineSurface shows NURBS.&lt;/p&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-f2018/posts/class26/#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;!-- used up to 2017 class 31, some of 32 --&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>class</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class26/</guid><pubDate>Thu, 29 Nov 2018 05:00:00 GMT</pubDate></item><item><title>CG Class 25, Mon 2018-11-26</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class25/</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-f2018/posts/class25/#acm-sigspatial-gis-cup-1st-place" id="id1"&gt;1   ACM SIGSPATIAL GIS Cup 1st place&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class25/#chapter-13-slides-ctd" id="id2"&gt;2   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-f2018/posts/class25/#chapter-14" id="id3"&gt;3   Chapter 14&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class25/#chapter-14-slides" id="id4"&gt;4   Chapter 14 slides&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="acm-sigspatial-gis-cup-1st-place"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class25/#id1"&gt;1   ACM SIGSPATIAL GIS Cup 1st place&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a class="reference external" href="http://sigspatial2018.sigspatial.org/giscup2018/results"&gt;Here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In 2016, we won &lt;a class="reference external" href="http://sigspatial2016.sigspatial.org/giscup2016/results"&gt;2nd&lt;/a&gt;.  We also won 2nd in 2015.&lt;/p&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-f2018/posts/class25/#id2"&gt;2   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_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-f2018/posts/class25/#id3"&gt;3   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="https://wrf.ecse.rpi.edu/p/77-sorsa92-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.   Changing one control point of a hi-degree curve changes the whole curve.   Parts of the curve distant from that point may move a lot.   This makes designing a desired curve impossible.&lt;/li&gt;
&lt;li&gt;numerical instability.   Small changes in coefficients cause large changes in the curve, even if computations are exact.&lt;/li&gt;
&lt;li&gt;roundoff error.  Computations are not exact.&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://wrf.ecse.rpi.edu/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. in 2D (12 in 3D).&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.  Designers like this.&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;Matching tangents (called &lt;span class="math"&gt;\(G^1\)&lt;/span&gt; or geometric continuity) is sufficient, and is weaker than matching the 1st derivative (&lt;span class="math"&gt;\(C^1\)&lt;/span&gt; or parametric continuity), since the 1st derivative has a direction (tangent) and a length.   Most people do &lt;span class="math"&gt;\(C^1\)&lt;/span&gt; because it's easier and good enough.  However &lt;span class="math"&gt;\(G^1\)&lt;/span&gt; gives you another degree of freedom to use in your design.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Similarly, matching the radius of curvature (&lt;span class="math"&gt;\(G^2\)&lt;/span&gt; or geometric continuity) is weaker than matching the 2nd derivative (&lt;span class="math"&gt;\(C^2\)&lt;/span&gt; or parametric continuity), but most people do parametric continuity.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Parametric continuity 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="//wrf.ecse.rpi.edu/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 earlier 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 may 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;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="chapter-14-slides"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class25/#id4"&gt;4   Chapter 14 slides&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/WEEK14/Angel_UNM_14_14_1.ppt"&gt;14_1 Curves and surfaces&lt;/a&gt;.&lt;/li&gt;
&lt;li&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;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>class</category><category>mathjax</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class25/</guid><pubDate>Sun, 25 Nov 2018 05:00:00 GMT</pubDate></item><item><title>CG Class 24, Mon 2018-11-19</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/</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-f2018/posts/class24/#thanksgiving-trivia-questions" id="id2"&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-f2018/posts/class24/#nice-site-on-visualizing-quaternions" id="id3"&gt;2   Nice site on visualizing quaternions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/#chapter-13-slides-ctd" id="id4"&gt;3   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-f2018/posts/class24/#my-commentaries" id="id5"&gt;4   My commentaries&lt;/a&gt;&lt;ul class="auto-toc"&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/#clipping" id="id6"&gt;4.1   Clipping&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/#id1" id="id7"&gt;4.2   Polygon rendering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/#visibility-methods" id="id8"&gt;4.3   Visibility methods&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/#textbook-programs" id="id9"&gt;5   Textbook programs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&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-f2018/posts/class24/#id2"&gt;1   Thanksgiving trivia questions&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="loweralpha simple"&gt;
&lt;li&gt;When the native American &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Squanto"&gt;Squanto&lt;/a&gt; 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="nice-site-on-visualizing-quaternions"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/#id3"&gt;2   Nice site on visualizing quaternions&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Lessons by Grant Sanderson, Technology by Ben Eater.&lt;/p&gt;
&lt;p&gt;&lt;a class="reference external" href="https://eater.net/quaternions"&gt;here&lt;/a&gt;&lt;/p&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-f2018/posts/class24/#id4"&gt;3   Chapter 13 slides ctd&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/WEEK13/Angel_UNM_14_13_2.ppt"&gt;13_2 Polygon rendering&lt;/a&gt;. Includes clipping polygons, hidden surface algorithms.&lt;/li&gt;
&lt;li&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;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="my-commentaries"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/#id5"&gt;4   My commentaries&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="clipping"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/#id6"&gt;4.1   Clipping&lt;/a&gt;&lt;/h3&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 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="loweralpha"&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="id1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/#id7"&gt;4.2   Polygon rendering&lt;/a&gt;&lt;/h3&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&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;/li&gt;
&lt;li&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;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="visibility-methods"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/#id8"&gt;4.3   Visibility methods&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Here's my summary of problems with the main methods:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;em&gt;Painters:&lt;/em&gt;&lt;ol class="loweralpha"&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="loweralpha"&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="loweralpha"&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 became 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&gt;
&lt;div class="section" id="textbook-programs"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/#id9"&gt;5   Textbook programs&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/CODE/10/"&gt;Chapter 10 Mandlebrot&lt;/a&gt; showing serious computation in the fragment shader.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>class</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class24/</guid><pubDate>Sun, 18 Nov 2018 05:00:00 GMT</pubDate></item><item><title>CG Class 23, Mon 2018-11-12</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class23/</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-f2018/posts/class23/#upcoming-classes" id="id1"&gt;1   Upcoming classes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class23/#chapter-12-slides-ctd" id="id2"&gt;2   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-f2018/posts/class23/#chapter-13-slides" id="id3"&gt;3   Chapter 13 slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class23/#textbook-programs" id="id4"&gt;4   Textbook programs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class23/#fun-stuff-for-thanksgiving" id="id5"&gt;5   Fun stuff for Thanksgiving&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="upcoming-classes"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class23/#id1"&gt;1   Upcoming classes&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;No class Wed 11/14.&lt;/li&gt;
&lt;li&gt;No class Thurs 11/15 because Pres Jackson scheduled a faculty meeting then.&lt;/li&gt;
&lt;li&gt;Next class Mon 11/19&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-f2018/posts/class23/#id2"&gt;2   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_3.ppt"&gt;12_3 Graphical Objects and Scene Graphs&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/WEEK12/Angel_UNM_14_12_4.ppt"&gt;12_4 Graphical Objects and Scene Graphs 2&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/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-f2018/posts/class23/#id3"&gt;3   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;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="textbook-programs"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class23/#id4"&gt;4   Textbook programs&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/CODE/10/"&gt;Chapter 10 Mandlebrot&lt;/a&gt; showing serious computation in the fragment shader.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="fun-stuff-for-thanksgiving"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class23/#id5"&gt;5   Fun stuff for Thanksgiving&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="http://www.underhanded-c.org/"&gt;The Underhanded C Contest&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/heckbert-rls-jello.pdf"&gt;Raytracing jello brand gelatin&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/ioccc/"&gt;IOCCC program to do Julia sets&lt;/a&gt; tvr.&lt;/li&gt;
&lt;/ol&gt;
&lt;!-- used up to 2017 class 30 (exc videos and Thanksgiving) --&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>class</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class23/</guid><pubDate>Mon, 12 Nov 2018 05:00:00 GMT</pubDate></item><item><title>CG Class 22, Thu 2018-11-01</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class22/</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-f2018/posts/class22/#chapter-12-slides" id="id1"&gt;1   Chapter 12 slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class22/#textbook-programs" id="id2"&gt;2   Textbook programs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="chapter-12-slides"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class22/#id1"&gt;1   Chapter 12 slides&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/WEEK12/Angel_UNM_14_12_1.ppt"&gt;12_1 Hierarchical Modeling 1&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/WEEK12/Angel_UNM_14_12_2.ppt"&gt;12_2 Hierarchical Modeling 2&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="textbook-programs"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class22/#id2"&gt;2   Textbook programs&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/CODE/09/"&gt;Chapter 9 simple hierarchical models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://wrf.ecse.rpi.edu/Teaching/graphics/SEVENTH_EDITION/CODE/10/"&gt;Chapter 10 Mandlebrot&lt;/a&gt; showing serious computation in the fragment shader.&lt;/li&gt;
&lt;/ol&gt;
&lt;!-- used up to 2017 class 28 and much of 29 --&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>class</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class22/</guid><pubDate>Thu, 01 Nov 2018 04:00:00 GMT</pubDate></item><item><title>CG Class 21, Wed 2018-10-31</title><link>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class21/</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-f2018/posts/class21/#darpa" id="id1"&gt;1   DARPA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class21/#chapter-11-slides" id="id2"&gt;2   Chapter 11 slides&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="darpa"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class21/#id1"&gt;1   DARPA&lt;/a&gt;&lt;/h2&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;I've mentioned DARPA several times; they funded research into computer graphics starting in the 1970s.  So here's some enrichment material on DARPA and autonomous vehicles.  This shows why the US is the best in the world at R&amp;amp;D.&lt;/p&gt;
&lt;p&gt;Autonomous vehicles make a marvelous example of a successful engineering project.  Many different parts all have to work to make the total project succeed.  They include laser rangefinding, image recognition, a road database accurate to the specific lane, and GPS navigation.  This is also a model for government - university - industry interaction.&lt;/p&gt;
&lt;p&gt;DARPA (The Defense Advanced Research Projects Agency) started this concept with a contest paying several $million in prizes.  (DARPA started connecting computers in different cities with phone lines in 1968.  This was the ARPAnet.  They funded computer graphics in the 1970s and some early steps in virtual reality in the 1980s.)&lt;/p&gt;
&lt;p&gt;In the 1st contest, the best vehicle failed after about 10 miles.  Five vehicles completed the 130 mile course in the 2nd contest.  The winning project leader was Sebastian Thrun, a Stanford CS prof.  He quit and moved to Google, who has now been funding this for several years.&lt;/p&gt;
&lt;p&gt;Finally, Dr Tony Tether, Director of DARPA when this happened, is an RPI BS EE grad.  (He went to Stanford for his PhD).&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="chapter-11-slides"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class21/#id2"&gt;2   Chapter 11 slides&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/WEEK11/Angel_UNM_14_11_1.ppt"&gt;11_1 Framebuffer objects&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/WEEK11/Angel_UNM_14_11_2.ppt"&gt;11_2 Render to texture&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/WEEK11/Angel_UNM_14_11_3.ppt"&gt;11_3 Agent based models&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;!-- used up to 2017 class 28 --&gt;
&lt;/div&gt;&lt;/div&gt;</description><category>class</category><guid>https://wrf.ecse.rpi.edu/Teaching/graphics-f2018/posts/class21/</guid><pubDate>Wed, 31 Oct 2018 04:00:00 GMT</pubDate></item></channel></rss>