From 5f94c315a65569bf66d603227177ba3f5ba5acd4 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Mon, 14 Feb 2011 16:34:07 -0800 Subject: fix [3452750] Issue 14634: SensorManager.getRotationMatrixFromVector gets NaN-Values [external] [DO NOT MERGE] make sure to not pass negative numbers to sqrt(). Change-Id: Ia31f7ebb7b75c79b548e428c6084fa55031617d0 related-bug: 3452750 --- core/java/android/hardware/SensorManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/android/hardware/SensorManager.java b/core/java/android/hardware/SensorManager.java index cc82170..b1a9349 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; -- cgit v1.1