anchor.diff:  You might wish to represent your rotations as Angle Axis pairs. That is, you define a axis of rotation and the angle with which to <<jme3/rotate#,rotate>> about this axis. <<jme3/quaternion#,Quaternion>> defines a method `fromAngleAxis` (and `fromAngleNormalAxis`) to create a Quaternion from this pair. This is acutally used quite a bit in jME demos to continually rotate objects. You can also obtain a Angle Axis rotation from an existing Quaternion using `toAngleAxis`.
   
   
  -===== Example - Rotate a Spatial Using fromAngleAxis
  +==== Example - Rotate a Spatial Using fromAngleAxis
   
   [source,java]
   ----
  
positive.code: Multiplying a vector with a Matrix allows the vector to be transformed. Either rotating, scaling or translating that vector.
  
  
  ===== Scaling
  
  If a _diagonal Matrix_, defined by D = [d~ij~] and d~ij~ = 0 for i != j, has all positive entries it is a _scaling matrix_. If d~i~ is greater than 1 then the resulting vector will grow, while if d~i~ is less than 1 it will shrink.
  
  
  ===== Rotation
  
  A _rotation matrix_ requires that the transpose and inverse are the same matrix (R^-1^ = R^T^). The _rotation matrix_ R can then be calculated as: R = I + (sin(angle)) S + (1 - cos(angle)S^2^ where S is:
  [cols="3", options="header"]
  
negative.code: If you have three axes that define your rotation, where the axes define the left axis, up axis and directional axis respectively) you can make use of `fromAxes` to generate the Quaternion. It should be noted that this will generate a new <<jme3/matrix#,Matrix>> object that is then garbage collected, thus, this method should not be used if it will be called many times. Again, `toAxes` will populate a Vector3f array.
  
  
  ==== Example - Rotate a Spatial Using fromAxes
  
  [source,java]
  ----
  