2

我正在尝试将我的动作与 android 设备映射到 OpenGL 场景中。

我记录了一个简单运动的加速度计值:将手机(平放在桌子上)向前移动 10 厘米(+x),然后向后移动 10 厘米(-x)。

问题是这个值在用于计算速度和位置时,只会让 opengl 立方体前进。似乎记录的负加速度不足以降低速度并反转其运动。

可能是什么问题?

这是我的函数,每次新数据进入时都会更新速度和位置:

void updatePosition(double T2) {
    double T = 0.005;
    Vec3 old_pos = position.clone(), old_vel = velocity.clone();

    velocity = old_vel.plus(acceleration.times(T));
    position = old_pos.plus(old_vel.times(T).plus(acceleration.times(0.5 * Math.pow(T, 2))));

}

这是整个捕获时间内的 X、Y、Z 加速度计值:

替代文字 http://img25.imageshack.us/img25/7528/forces.jpg

4

1 回答 1

1

您的函数采用参数 T2 我假设是加速器输入?但是您使用的 T 已声明为 double T = 0.005; 因此您的功能将始终以静态速率前进。

于 2010-04-23T08:33:34.970 回答