【问题标题】:Accelerometer Values from Android/iPhone device来自 Android/iPhone 设备的加速度计值
【发布时间】:2010-04-23 03:25:29
【问题描述】:

我正在尝试将我使用 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 加速度计值:

alt text http://img25.imageshack.us/img25/7528/forces.jpg

【问题讨论】:

    标签: java iphone android accelerometer


    【解决方案1】:

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

    【讨论】:

    • T2 是运动的持续时间(加速度计不同样本之间的时间)。出于测试目的,我使用了一个常数,但即使使用真实值,也会产生相同的结果。
    • 认为需要更多代码才能理解问题。检查您的值没有平方并丢失符号?
    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多