情景:
Calibrate
,其中存储有关某些变量的加速度的当前信息。让我们说:calibrationAcc = double[]{0,0,9.81}
将是值,电话何时面临up
。currectAcc
,显然是与重力一起。据我所知,为了获得粗略的加速度(没有重力),我唯一需要做的就是从校准中减去currentAcceleration
形式的值。所以它会是:
roughAcc = currentAcc - calibrationAcc
现在,我的roughAcc
包含的矢量值与纯汽车加速度相关。但是因为我不知道手机放在车内的位置(它可以像相机一样放置)我不知道如何改变我的{{1}进入汽车的坐标系。我希望有形式的值:
roughAcc
我在这里遗漏了一些东西。最简单的问题,我无法用我拥有的数据(仅使用校准矢量)来解决这种情况,当用户将手机平放在车内时(carAcc {
x // left or right car, increased in corners
y // front or back car, increased when accelerating
z // up or down, increased on bumps
}
。即使在这种情况下,我也看不懂清除加速度的哪一部分calibration = {0,0,9.8}
,carAcc.x
,因为我不知道手机在车内的位置(如果它放在carAcc.y
轴上汽车的前部,或x
,或是否是歪斜。
因此,就数学和矢量运算而言,我需要将y
转换为roughAcc
以及如何执行此操作。