android - Android中旋转矢量传感器和方向传感器之间的概念区别是什么?

标签 android android-sensors android-orientation

Android 提供旋转矢量传感器和方向传感器。我知道它们返回不同的数据,因为对于矢量传感器我们有角度的罪,在方向传感器我们有角度。但是概念上的区别是什么?我无法从文档中理解。哪一个提供了设备在三维空间中的方向?我很困惑!

最佳答案

较旧的 ORIENTATION 传感器使用三个角度报告方向。该坐标系的问题在于它存在“万向节锁定”问题:当实际方向矢量接近垂直时,其中一个坐标变为 90 度或 -90 度,其余两个坐标变得无法解释或危险地非规范化。

较新的 ROTATION 传感器使用四分位坐标报告方向,使用起来更复杂,但不会遇到万向节锁定问题。当使用四元数坐标报告方向时,无论方向是什么,您都可以确定设备的精确方向。

四元数的计算效率也更高。您无需调用昂贵的三角函数即可将四元数旋转应用于向量。如果没有提供 w 坐标,您仍然可以通过一个 sqrt 调用计算 w,而三个 sin 和三个 cos 函数调用三个角欧拉形式的方向坐标。

简而言之:ORIENTATION 式传感器做错了。它们已在 API 9 中通过用 ROTATION 传感器替换它们进行了修复。

关于android - Android中旋转矢量传感器和方向传感器之间的概念区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14032825/

相关文章:

android - 在 Android 中使用预加载的 Sqlite 数据库

android - 将 Google map 添加到 RecyclerView

Android加速度计校准?

android - GPS轨迹,计算高差

安卓级别(传感器加速度计)

android - Webview 重新加载蜂窝中的方向变化

Android 菱形按钮布局

android - 在风景中将 Camera Activity 旋转 180 度会导致反转相机预览

android - 对于 api 级别 < 18,强制 android 应用程序保持启动时的方向

android - 链接到第三方库(jar)中包含的服务