如何从四分之一值获得角度?

时间:2015-05-26 10:58:46

标签: android matrix vector rotation sensor

使用Android手机,我可以从TYPE_ROTATION_VECTOR获得四分位数值x,y,z

然而,我不知道如何获得角度。

有人对此有任何想法吗?谢谢。

1 个答案:

答案 0 :(得分:1)

取自here

    /**
     * Returns the heading, attitude and bank of this quaternion as euler angles in the double array respectively
     * 
     * @return An array of size 3 containing the euler angles for this quaternion
     */
    public double[] toEulerAngles() {
        double[] ret = new double[3];

        ret[0] = Math.atan2(2 * points[1] * getW() - 2 * points[0] * points[2], 1 - 2 * (points[1] * points[1]) - 2
                * (points[2] * points[2])); // atan2(2*qy*qw-2*qx*qz , 1 - 2*qy2 - 2*qz2)
        ret[1] = Math.asin(2 * points[0] * points[1] + 2 * points[2] * getW()); // asin(2*qx*qy + 2*qz*qw) 
        ret[2] = Math.atan2(2 * points[0] * getW() - 2 * points[1] * points[2], 1 - 2 * (points[0] * points[0]) - 2
                * (points[2] * points[2])); // atan2(2*qx*qw-2*qy*qz , 1 - 2*qx2 - 2*qz2)

        return ret;
    }