Fixes #898. This was previously fixed in the scenegraph branch likely
for similar reasons as to its  discovery by @Ayrton81 in his fork
regarding the terrain classes. Due to the time remaining before the
scenegraph branch is merged in, I'm applying this fix directly.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
A small but potential fix for issue #909.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Fixes #927. The case statements added in the texture manager rewrite
were missing their break statements causing a fall through behavior. I
am not certain but this may have some impact on #921.
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>