summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mathias Agopian <mathias@google.com> 2011-02-14 16:34:07 -0800
committer Mathias Agopian <mathias@google.com> 2011-02-14 17:17:58 -0800
commit7b6e4bd697e76bfc44e59ad42666e758c091b7bf (patch)
treed96b5cbf37d39f987ae02a61cff246203edcd91a
parentcfe8903441fa3fc13c774587fe96df8206d4ba7d (diff)
fix [3452750] Issue 14634: SensorManager.getRotationMatrixFromVector gets NaN-Values [external]
make sure to not pass negative numbers to sqrt(). Change-Id: Ifd200c781ae8a94c8a3c600401b60f4cf2430be3 related-bug: 3452750
-rw-r--r--core/java/android/hardware/SensorManager.java3
1 files changed, 2 insertions, 1 deletions
diff --git a/core/java/android/hardware/SensorManager.java b/core/java/android/hardware/SensorManager.java
index f079e42a9993..1bd8ef525f1b 100644
--- a/core/java/android/hardware/SensorManager.java
+++ b/core/java/android/hardware/SensorManager.java
@@ -1970,7 +1970,8 @@ public class SensorManager
if (rotationVector.length == 4) {
q0 = rotationVector[3];
} else {
- q0 = (float)Math.sqrt(1 - q1*q1 - q2*q2 - q3*q3);
+ q0 = 1 - q1*q1 - q2*q2 - q3*q3;
+ q0 = (q0 > 0) ? (float)Math.sqrt(q0) : 0;
}
float sq_q1 = 2 * q1 * q1;