title: Transforming surface normal vectors and tangent vectors
body: <p>According to a book <em>Physically Based Rendering: From Theory to Implementation.</em> By Matt Pharr, Greg Humphreys (<a href="https://books.google.by/books?id=9nJBAJhTxt8C&amp;pg=PA86&amp;lpg=PA86&amp;dq=Physically%20Based%20Rendering%20vector%20transformation&amp;source=bl&amp;ots=d_STLdWnAr&amp;sig=788ywu67EPc_iZ0q8Cu6JALR97s&amp;hl=en&amp;sa=X&amp;ei=IK1kVf_QPKToywP2jYL4BA&amp;ved=0CDIQ6AEwAw#v=onepage&amp;q&amp;f=false" rel="noreferrer">link</a>, p. 86-87),<br>
  surface <strong>tangent vectors</strong> are transformed as common vectors, using transformation matrix <strong>M</strong>, but<br>
  surface <strong>normal vectors</strong> are transformed using <img src="https://i.stack.imgur.com/wNF4o.gif" alt="enter image description here">.</p>
  
  <p>I wonder why scaling does make a normal incorrect, but doesn't touch a tangent vector? Why are normals  so special?</p>
  
  <p>See the figure from the book. <img src="https://i.stack.imgur.com/GcTeQ.png" alt="enter image description here"></p>
  
  <p>I have read that such transformation for normal is needed to maintain orthogonality of the normal and tangent. But I'd like to get some intuitive explanation.</p>