1

我正在开发我的第一个应用程序,对于一些计算,我需要一个垂直轴的角度。基本上我正在尝试制作简单的测量工具,可以在按钮点击时进行计算。我有高度(H),其中是设备,我需要设备垂直轴的角度。有了这些值,我就可以计算 sin 等等。

我尝试使用此链接中的代码(使用 getRotationMatrix() 和 getOrientation() 查找方向)来获取值,但它崩溃了,而且我认为这不是我想要的值,因为设备保持静止。

说明我的意思(我有'H'值,我正在寻找角度'a'或我可以从中提取它的数据):

http://s2.postimg.org/z4mgu4l49/angle_A.jpg

任何有用的链接、教程或示例都会非常有帮助。

4

1 回答 1

0

我假设 Android 设备将沿着您绘制的三角形的斜边放置,因此如果设备平放在桌子上,那么您的角度“a”将为 90 度,并且如果设备直立那么角度“a”将为零。如果是这样,那么该角度“a”与设备的间距有关,这正是您应该能够通过使用 getRotationMatrix() 和 getOrientation() 获得的。然而,当设备平放在桌子上时,俯仰角通常定义为零,而当它直立时,俯仰角通常定义为 90 度,因此您的角度“a”等于(90 度 - 俯仰角)。注意单位,有时角度以弧度为单位,有时以度为单位。

如果你的代码崩溃了,那么你一定是不小心在某个地方引入了一个错误,因为我肯定有代码使用 getRotationMatrix() 和 getOrientation() 而不会崩溃。

您会发现当设备接近垂直位置时,getOrientation() 生成的某些方向值会变得不稳定。这是一个被称为云台锁定的问题,因为当设备垂直时,方位角和滚动是一回事。然而,音高应该保持可靠。

如果您在设备垂直时需要可靠的方位角和俯仰角,那么您可以看看我对“可以补偿倾斜和俯仰角的 Android 指南针”问题的回答。该答案具有绝对有效的代码,如果您无法使 getRotationMatrix() 和 getOrientation() 正常工作,那么由此产生的音调对您来说将很好。

于 2013-05-15T18:38:44.603 回答