Provided a static lookAt method for Quaternion (Unity already does this)

The following implementation of lookAt returns a Quaternion that is oriented with a forward and up vector!

Implemented to workaround problems with the existing BaseObject3D lookAt() method which disables it's own orientation quaternion and rotational matrix.

This uses Gram-Schmidt orthonormalization to form the required axes.

Tested and working beautifully (no gimbal lock, very smooth predictable behaviour).
Pretty sure this is how Unity does it, too.

To set a camera's orientation with this, make sure isCamera is true.
To set an object's orientation with this, make sure isCamera is false.

for example, to keep a player always oriented "up" just do this:
player.setOrientation(Quaternion.lookAt(forward, new Vector(0,1,0), false));

These can be placed directly into the Quaternion class as statics.
Switched TimerTask for frame rendering to ScheduledThreadPoolExecutor

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Merge pull request #949 from Tenkiv/TimerTask_Removal

Switched TimerTask for frame rendering to ScheduledThreadPoolExecutor
Replaced the methods that generate objects during the render
Made SLERP methods of `Quaternion` return a normalized result.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Resolves method parameter order issue raised by @ToxicBakery.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Made UP/RIGHT/FORWARD static member vectors of Vector3 public instead of
private and modified library code accordingly.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Refactored a lot of static methods to manipulate their object directly
and renamed methods to be more descriptive.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Merge pull request #948 from dcerisano/patch-1

Provided a static lookAt method for Quaternion (Unity already does this).
Merge pull request #950 from MasDennis/Aryton81_GC_Reduction

WIP: Replaced the methods that generate objects during the render
ICurve3D was returning the same Vector3 which it took as a parameter and
this led to some confusing and disjointed code in the library and
examples. This commit fixes that.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Began rewrite of Vector3 class.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Finished synchronizing usage of scratch member Vector.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Added documentation to about half of the existing class.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Fixes #967. There was a bug in the Matrix4#transpose() method which used
the wrong indices. Thanks @kostik1337 for reporting this.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Added a lot more documentation and reorganized the methods.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
- Finished adding documentation to existing methods of Vector3. 
- Added rajawali.math.vector package and moved Vector2 and Vector3 to
it.
- Added ImmutableVector3 which inherits from Vector3.
- Refactored more methods and moved some static members to Matrix4.
- Updated CHANGELOG.md

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Corrected documentation of ImmutableVector3 and made
Vector3#getAxisVector(Axis) throw an IllegalArgumentException rather
than return null on invalid input.
Refactored some methods from Quaternion into Vector3. Fixed a perceived
error in the vector to vector projection method.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Updates ATransformable3D to more efficienty use Vector3.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>