【发布时间】:2014-08-17 19:18:45
【问题描述】:
我已经实现了一种手势检测算法,用户可以在其中定义自己的手势。手势由加速度计发送的加速度值定义。
现在我的问题是:是否可以将执行的手势可视化,以便用户识别他执行的手势?
我的第一个想法和尝试只是使用 Verlet Velocity Integration(如这里描述的:http://lolengine.net/blog/2011/12/14/understanding-motion-in-games)来计算相应的位置并使用这些位置在 OpenGL 中形成一条线带。渲染工作正常,但结果根本不是执行手势的样子。
这是我的代码:
float deltaTime = 0.01;
PosData null;
null.x = 0.0f;
null.y = 0.0f;
null.z = 0.0f;
this->vertices.push_back(null);
float velX = 0.0f;
float velY = 0.0f;
float velZ = 0.0f;
for (int i = 0; i < accData.size(); i++) {
float oldVelX = velX;
float oldVelY = velY;
float oldVelZ = velZ;
velX = velX + accData[i].x * deltaTime;
velY = velY + accData[i].y * deltaTime;
velZ = velZ + accData[i].z * deltaTime;
PosData newPos;
newPos.x = vertices[i].x + (oldVelX + velX) * 0.5 * deltaTime;
newPos.y = vertices[i].y + (oldVelY + velY) * 0.5 * deltaTime;
newPos.z = vertices[i].z + (oldVelZ + velZ) * 0.5 * deltaTime;
this->vertices.push_back(newPos);
}
我使用 0.01 的 deltaTime,因为我的加速度计每 10 毫秒发送一次加速度数据。
现在我想知道:我的计算有问题吗?它甚至可以这样工作吗?有没有图书馆可以做到这一点?还有其他建议吗?
【问题讨论】:
标签: c++ opengl data-visualization gesture