Property::Value changed to store AngleAxis instead of Quaternion 50/68350/4
authorDavid Steele <david.steele@samsung.com>
Tue, 3 May 2016 14:02:09 +0000 (15:02 +0100)
committerAdeel Kazmi <adeel.kazmi@samsung.com>
Thu, 5 May 2016 15:00:53 +0000 (08:00 -0700)
commit06b9317feb28d55bf482dd0e200b99ca815e372f
treea9b628e43805429063aca9b8ef9c722250a5d692
parent81833cc5a512cf286881abc1889c03e5f1098ffa
Property::Value changed to store AngleAxis instead of Quaternion

For angles greater than 360 degrees, AngleAxis keeps it's winding
number (the number of complete rotations); whereas Quaternion loses
it. Changing Property::Value to store AngleAxis instead of Quaternion
internally enables AnimateBy to rotate 360 degrees or greater when
constructed with an AngleAxis.

Quaternions can _usually_ be converted to an Angle + Axis equivalent.
In an ideal world, there are some quaternion values that won't
convert, i.e. those for which sine(acos(.w)) is zero.

This is not an issue, as there is in practice no float value that
accurately represents N*2*PI ( for N != 0 ), consequently, the element
w generated by the Quaternion( Radian, Vector3 ) constructor is never
1 unless the initial angle was 0, which indicates no rotation.

Change-Id: I237ad5ccb1797ce7b5af9dc5e7708f65d4b785ad
Signed-off-by: David Steele <david.steele@samsung.com>
automated-tests/src/dali/utc-Dali-Animation.cpp
automated-tests/src/dali/utc-Dali-PropertyValue.cpp
dali/public-api/math/angle-axis.h
dali/public-api/math/quaternion.cpp
dali/public-api/object/property-value.cpp