使用重力确定世界参考系?
Posted
技术标签:
【中文标题】使用重力确定世界参考系?【英文标题】:Using gravity to determine world reference frame? 【发布时间】:2013-10-07 20:48:18 【问题描述】:我正在开发 android 上的计步器。为了改进它,我很想从所有其他力中提取垂直力。
由于不准确,文档表明不应再使用方向传感器,因此我正在寻找其他东西。
我的想法是:使用“TYPE_GRAVITY”传感器确定真正的垂直轴是什么(从地心到天空),然后使用该信息旋转 TYPE_LINEAR_ACCELERATION 数据,然后只使用想要的轴。
我想知道,这可能吗?还是无法从单个 [x,y,z] 重力矢量计算所需的旋转?
【问题讨论】:
【参考方案1】:我将尝试从物理学的角度而不是 Android/编程的角度来解决这个问题:
假设TYPE_GRAVITY
传感器返回一个向量G = [xG, yG, zG子>]。
TYPE_LINEAR_ACCELERATION
传感器返回另一个向量 A = [xA, yA, zA ]。
您要查找的是 A 在 G 方向上的单位向量上的投影幅度。换句话说,有多少A在G方向?
首先我们需要得到G方向的单位向量,我们称之为Gunit(看看我做了什么那里?)。为此,我们将 G 的每个分量除以其大小 ||G||,其中 ||G|| 是平方根每个分量的平方和(距离公式)。因此,
G单位 = [xG / ||G||, yG / ||G||, zG / ||G||]
A的分量在G方向的大小然后通过计算点积得到:
A · Gunit = (xA * (xG / ||G||)) + (yA * (yG / ||G|| )) + (zA * (zG / ||G||))。
结果是一个标量(不是向量),这就是您要查找的数量。
这是一篇很好的***文章供参考:http://en.wikipedia.org/wiki/Vector_projection
【讨论】:
哇,惊人的答案......!现在已经很晚了,我需要好好研究它才能真正理解它,但是哇!去试试,会报告的! 哇,真是太棒了。效果很好!我用完整的加速度计数据对其进行了测试,在以各种可能的方式旋转设备的同时,Z 轴的重力输出保持在 1G。它看起来更复杂,因为我已经在我的代码中使用了||G||
。它确实是magnitude
。我会尝试为这个问题添加一个赏金来奖励你,因为这个答案真的很出色。
我想有一个与重力数据相关的预先计算的幅度是有道理的。我很高兴能帮上忙!我的背景是物理,而且我对 Android 编程还是很陌生,所以我喜欢我的物理背景以意想不到的方式帮助我!我想我现在可能会更深入地研究这个传感器的东西。
好的,很好。不,幅度不是预先计算的,但我之前为了其他目的计算过,所以我明白你在说什么。 :)以上是关于使用重力确定世界参考系?的主要内容,如果未能解决你的问题,请参考以下文章
swift spritekit 随着游戏时间的推移增加重力?
在中国地图上确定南京和拉萨得经纬度,在世界地图上确定美国休斯敦得经纬度,比较三者谁的经纬度相近?讲