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 the dot product is 0 then the two Vectors are _orthogonal_ or 90 degrees off.
  
  
  ==== Cross Product
  
  The Cross Product of two Vectors returns a third Vector that is prependicular to the two Vectors. This is very useful for calculating surface normals.
  
  *P* X *Q* = &lt;P~y~Q~z~ - P~z~Q~y~, P~z~Q~x~ - P~x~Q~z~, P~x~Q~y~ - P~y~Q~x~&gt;
  
  
  ==== jME Class
  
  Vector3f and Vector2f store their values (x, y, z) and (x, y) respectively as floats. Most methods are straight forward, and I will leave documentation to the Javadoc.
  
  