anchor.diff:  
   We slightly touched quaternion multiplication, and we proved an important equation stem:[{q_1^{-1}}{q_2^{-1}}=({q_2}{q_1})^{-1}].
   
  -=== Appendix: Derive Quaternion Multiplication
  +== Appendix: Derive Quaternion Multiplication
   
   This part is not very important for understanding quaternion. It is a bit calculation heavy and is more for fun. Feel free to skip.
   
  
positive.code: :stem: latexmath
  :figure-caption!:
  
  === Before We Start
  
  Quaternion is widely used in game engines to represent 3D rotation. As a game engineer you might be using quaternion explicitly or implicitly in your daily work, but do you really understand what is going on under the hood when you are calling “rotate a vector” or “combine two rotations”? Why rotating a vector stem:[v] by quaternion stem:[q] is calculated by a “sandwich” multiplication: stem:[qvq^{-1}] ? Why rotating by quaternion stem:[q_1] then stem:[q_2] is in the reversed order: stem:[{q_2}{q_1}], and can you visualize the result rotation axis and angle?
  
  
negative.code: 
  From now on, any quaternion stem:[q] used in this article is by default a unit quaternion, and we will use stem:[q] to describe rotations.
  
  == Rotation and Flip
  
  Now let’s forget quaternion for a minute, and focus on the nature of rotations. This part is the key to understand quaternion calculation in an easier way.
  
  