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

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

Solutions Collecting From Web of "Android中旋转vector传感器和方向传感器之间的概念区别是什么?"

较旧的ORIENTATION传感器使用三个angular度报告方向。 这个坐标系的问题在于它受到“万向节locking”的影响:当实际方向向量接近垂直时,其中一个坐标变为90或-90度,剩下的两个坐标变为不可解释或危险的非规范化。

较新的ROTATION传感器使用四分位数坐标来报告方向,这些坐标更复杂,但不会受到Gimballocking问题的影响。 使用四元数坐标报告方向时,无论方向是什么,都可以确定设备的精确方向。

四元数的计算效率也更高。 您不需要调用昂贵的三angular函数来将四元数旋转应用于vector。 如果没有提供w坐标,则可以用一个sqrt调用来计算w,而在三angular欧拉forms中则需要三个正弦和三个cos函数调用坐标坐标。

小故事:ORIENTATION式传感器做错了。 他们被固定在API 9中,用ROTATION传感器代替。

ROTATION_VECTOR传感器是在API 9中引入的,代表了将来自不同传感器(通常为ACCELEROMETER,GEOMAGNETIC_FIELD和GYROSCOPE)的数据进行组合的“虚拟”传感器,并提供了更精确的数据,而不是使用ACCEL和GEOMAGNETIC_FIELD传感器的原始数据。 这被称为“传感器融合”。 更多信息你可以在这里find

ORIENTATION传感器已被弃用,因为它提供的数据不是很准确。 文档build议使用ACCELEROMETER和GEOMAGNETIC_FIELD传感器的原始数据。

不幸的是,我不能提供任何示例,因为我现在正在调查过程中如何使用ROTATION_VECTOR传感器数据:)

以防万一你需要一些例子如何使用原始数据 – 随时问我 – 我会张贴一些例子,但简单的谷歌search可以帮助你更好;)