gpt4 book ai didi

ios - 使用加速度计和陀螺仪独立于方向跟踪手机运动

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:42 24 4
gpt4 key购买 nike

我一直在试验 Coremotion APIS,目的是将坐标从电话引用系统转换为“地球”引用系统,即存储在 CMAttitude 对象中的坐标。到目前为止,我尝试的是获取 CMRotationMatrix

CMRotationMatrix r = motionManager.deviceMotion.attitude.rotationMatrix;

然后做一个矩阵乘法

CMAcceleration a = motionManager.deviceMotion.gravity;

通过以下方式(typedef float vec3f[3])

vec3f accelerationInReferenceSystem;
accelerationInReferenceSystem[0] = a.x * r.m11 + a.y * r.m12 + a.z * r.m13;
accelerationInReferenceSystem[1] = a.x * r.m21 + a.y * r.m22 + a.z * r.m23;
accelerationInReferenceSystem[2] = a.x * r.m31 + a.y * r.m32 + a.z * r.m33;

但是,运气不好。我不太热衷于 3D 图形,关于如何使用各种 CMRotationMatrix、四元数等的文档也不多。在采用这种方式之前,我尝试记录 d.attitude.pitch、d.attitude.roll 的值和 d.attitude.yaw。对于我所读到的内容,这不是要走的路,但除此之外,我发现 d.attitude.pitch 返回的值仅跨越 PI 弧度,因此我需要在计算俯仰角时包括偏航角0 到 2PI 以了解手机头部的方向。在我看来,使用旋转矩阵是个不错的选择。另外,我想知道我是否需要使用与当前旋转矩阵相反的矩阵,以便将坐标带入由 r.attitude 标识的系统中,如果您能提供帮助,谢谢!

最佳答案

我不确定我明白你想做什么..但是如果你所说的“地球”引用系统是指固定引用系统,而你所说的“坐标”是指 x、y、z 坐标,那么就不可能做你想做的事情(或者至少不可能准确地做)。因为你可以使用这些来计算设备的位移,这是不可能令人满意的 - 例如看这个:How can I find distance traveled with a gyroscope and accelerometer?

关于ios - 使用加速度计和陀螺仪独立于方向跟踪手机运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com