java - 我应该使用加速度计还是陀螺仪来测量 z 轴的角度

标签 java android accelerometer sensors gyroscope

我正在 Android 中编写一个应用程序,它需要知道后置摄像头相对于地平线指向的角度,而不是相对于其最后位置的角度。我读过的关于指南针和加速度计的所有定义都没有说我可以做到这一点。完全有可能做到这一点吗?

最佳答案

你应该使用加速度计。

想法如下,在静态相机中,作用在相机上的唯一力(由加速度计看到)是重力。这应该能够给你哪个方向是“向下”。然后您需要做的是计算相机所面对的方向(这是一个常数,取决于加速度计的朝向)与重力方向之间的角度。

两个 vector 的点积 ( http://en.wikipedia.org/wiki/Dot_product ) 应该给出 vector 的余弦值(如果两个 vector 是单位 vector ),然后使用 arccos 应该能够得到以弧度为单位的角度。

根据定义,(真实)地平线是向下 90º(pi/2 弧度),你应该从点积的结果中减去 pi/2,结果应该在 -pi/2 和 +pi/之间2.

-x 的结果表示相机“朝下”并与地平线成 x 角。 +x 的结果表示相机“朝上”并与地平线成 x 角。

关于java - 我应该使用加速度计还是陀螺仪来测量 z 轴的角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17051154/

相关文章:

java - 切换到 targetSdkVersion 28 (Android) 时出现 DefaultHttpClient NoClassDefFoundError

java - calendar.getInstance() - 它如何返回对象

android - 如何从 Firebase 数据库中检索不同的项目?

java - 如何知道 Android 设备是否平放在 table 上

Java 8 : Get files from folder/subfolder

Java 小程序 : How do games like Runescape preload and save resources so the user doesn't have to download them again later?

android - 使用互补滤波器的传感器融合

android - 使用摇动 Action 从加速度计获取方向

java - 在 Java 中设置 char 数组的大小

php - 从 Android 应用程序向 PHP 网络服务发布多于一条记录的数据