首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当设备不平坦的时候找到方位角值- Android?

当设备不平坦的时候找到方位角值- Android?
EN

Stack Overflow用户
提问于 2014-03-22 17:32:33
回答 2查看 2.5K关注 0票数 1

我想找出设备的方位角,当它不是平坦的地面时。

这里有一个已经存在的答案,但对我来说还不完整:

这是关于这个问题的公认的答案,几乎是一样的。Inconsistent orientation sensor values on Android for azimuth/yaw and roll

问题:

但在这个问题中,公认的答案给出方位角值在范围内-89到89。当从磁北移动时,我想计算距离0-359 degree的方位角值。我怎样才能在Android传感器中计算这个数字呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-23 08:17:39

找到了答案:

像这样计算方位角:

代码语言:javascript
复制
mAzimuthAngleNotFlat = (int) Math.toDegrees(Math
                    .atan2((rotationMatrix[1] - rotationMatrix[3]), (rotationMatrix[0] + rotationMatrix[4])));

要将其转换为0到359,只需应用以下内容:

代码语言:javascript
复制
    if (mAzimuthAngleNotFlat < 0) {
        mAzimuthAngleNotFlat += 360;
    }

那你就完了。当设备不平坦时,这个角度将是精确的。关于更多信息,你可以看到关于接受答案的讨论。

Inconsistent orientation sensor values on Android for azimuth/yaw and roll

票数 0
EN

Stack Overflow用户

发布于 2014-03-26 06:12:29

当设备不是平坦的,如果你想要你的指南针方向是负值的装置z轴方向(也就是你正在看的方向),那么方位角可以通过第一次调用来计算。

代码语言:javascript
复制
remapCoordinateSystem(inR, AXIS_X, AXIS_Z, outR);

然后打电话

代码语言:javascript
复制
getOrientation (float[] R, float[] values)

传入参数outR的参数R

这相当于将z轴投影到世界xy平面,然后计算出这个投影和世界y轴之间的角度,它是磁北的。

当器件绕此轴旋转时,z轴点在同一方向,因此方位角不应改变。当然,由于加速,它会有一些变化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22581095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档