math - 仅使用加速度计计算角度倾斜
问题描述
我想知道如何使用我的 Android 手机的加速度计的坐标来计算连接加速度计和树底 (B) 以及加速度计和树顶 (T) 的两段之间的角度。
加速度计每秒获取 3 个轴上的加速度值,因此我计算了平均值,我得到: 对于朝向 B 的手机:Ay1 = -9.69ms^-1 和 Az1 = 0.71ms^-1 对于朝向 T 的手机: Ay2 = -9.71ms^-1 和 Az2 = 0.71ms^-1
我位于距离树 D = 20m 处。最后我想知道H的值。所以我想知道如何计算角度然后找到树的高度。
谢谢你的帮助
解决方案
我们需要的角度是 world-up 和 device-up 之间的角度。由于重力矢量指向世界下方,这很简单(假设您使用设备的 y 轴指向):
cos angle = -a.y / sqrt(a.x^2 + a.y^2 + a.z^2)
我们从您的读数中得到的两个角度是:
angle1 = 4.19065°
angle2 = 4.18205°
您已经可以看到角度非常接近,因为两个加速度值也非常接近。顺便说一句,我想知道您是否真的指向 y 轴,因为重力值表明您在这两种情况下都将手机几乎直立。
无论如何,如果我们假设这两个角度是正确的,我们现在可以计算各个三角形的高度,假设长度为 target l
。然后:
tan (90° - angle) = h / l
假设l=20 m
,这给了我们两个高度值:
h1 = 272.958 m
h2 = 273.521 m
这些是手机高度以上的高度。理论上,一个应该是积极的,另一个应该是消极的。树的高度将是两个高度的差:
treeH = h2 - h1
treeH = 0.56338 m
正如您在整个示例中所看到的,您的读数一定很差。不过,这就是您计算树高的方式。
推荐阅读
- javascript - 循环通过firebase数据
- c - lseek() 的 SEEK_HOLE 是否按预期运行?
- google-bigquery - 使用 Google Composer 运行 Bigquery 查询
- c++ - 模板化构造函数专业化
- function - 有没有办法在 perl 中将函数声明为变量?
- javascript - 在将 API 数据传递到组件方面需要帮助
- jquery - 如何使用 jquery 在引导时间选择器中禁用过去的时间
- reactjs - 如何在reactjs中的cellrenderer中添加模态
- c# - C# 在哈希中存储和检索对象属性
- python-3.x - 如何以 UTF-8 格式打开 HTML 文件进行解析?