title: How to properly tween mesh using quaternions?
body: <p>I have cobbled together a tween function (<em>with enormous help from SO</em>) to tween a mesh...and it's working fine.</p>
  
  <p>My question is that - I feel that the way I am doing it is inefficient and I'm am looking for a better solution.  </p>
  
  <p>For example I am cloning my mesh each time I call the function...and that is so I can call rotateOnAxis().  I know what I want is a target quaternion that is my mesh rotation incremented on the axis...but I just haven't been able to find a better way to get it.</p>
  
  <p>As usual any help much appreciated.</p>
  
  <p>PS. really loving threejs!!!    </p>
  
  <pre><code>function tweenRot(obj, axis, angle){
          var actp = obj.clone(); // seems wasteful
          actp.rotateOnAxis( axis, angle );
          var targq = actp.quaternion;
  
          var qm = new THREE.Quaternion(); 
          var curQuaternion = obj.quaternion;
  
          var tween = new TWEEN.Tween({t:0}).to({t:1}, 500)
              .easing( TWEEN.Easing.Sinusoidal.InOut )
              .onUpdate(function(){
                  THREE.Quaternion.slerp(curQuaternion, targq, qm, this.t);
                  qm.normalize();
                  obj.rotation.setFromQuaternion(qm)
              });
  
          tween.start();
      }
  </code></pre>