am 24754c9f: Merge "don\'t attempt to normalize the rotation vector" into gingerbread

* commit '24754c9f94b1bd8b176456da82a6059b2e8ded0f':
  don't attempt to normalize the rotation vector
This commit is contained in:
Mathias Agopian
2010-11-30 14:05:44 -08:00
committed by Android Git Automerger

View File

@@ -114,10 +114,12 @@ bool RotationVectorSensor::process(sensors_event_t* outEvent,
float qx = sqrtf( clamp( Hx - My - Az + 1) * 0.25f );
float qy = sqrtf( clamp(-Hx + My - Az + 1) * 0.25f );
float qz = sqrtf( clamp(-Hx - My + Az + 1) * 0.25f );
const float n = 1.0f / (qw*qw + qx*qx + qy*qy + qz*qz);
qx = copysignf(qx, Ay - Mz) * n;
qy = copysignf(qy, Hz - Ax) * n;
qz = copysignf(qz, Mx - Hy) * n;
qx = copysignf(qx, Ay - Mz);
qy = copysignf(qy, Hz - Ax);
qz = copysignf(qz, Mx - Hy);
// this quaternion is guaranteed to be normalized, by construction
// of the rotation matrix.
*outEvent = event;
outEvent->data[0] = qx;