我正在获取grove pi模块的3dimensional值, acc_vector =(accX,accY,accZ) 每100毫秒。 我想要的是,使用java,diplaying我用模块做的运动...但我的问题不是如何显示它:p
为此我需要计算位置的值 position_vector =(x,y,z) 对应于加速度值。但我不清楚如何做到这一点。
这是我尝试过的,但它总是给出奇怪的结果(初始位置,速度和加速度是(0,0,0)):
service.GetService<IContentService>().SaveAndPublishWithStatus(item);
position_vector = 0.5f*acc_vector*t;
position_vector += acc_vector;
答案 0 :(得分:1)
这取决于您想要如何插值加速度。最简单(但可能最不准确)的是假设样本之间的持续加速。在这种情况下,x
组件的代码应该类似于
position[0] += velocity[0] * timeStep + 0.5 * acceleration[0] * timeStep * timeStep;
velocity[0] += acceleration[0] * timeStep;
您必须对y
和z
组件执行相同的操作。
要获得更准确的结果,您可能需要更复杂的技术。您可以查找Runge-Kutta等数值方法。