鉴于以下数据
有没有办法让汽车加速和减速,将设备置于汽车的任意位置?
如果不是通过将设备定位在车内的固定位置来获得加速和减速的最佳方法是什么?
任何提示或解决方案都将受到高度赞赏。
提前致谢!
编辑:我试图从这个答案Using CMDeviceMotion and CMAttitude to isolate vertical or horizontal acceleration实施建议的方法来隔离垂直和水平加速度。
我将参考框架设置为CMAttitudeReferenceFrameXMagneticNorthZVertical
//Quaternion Conjugation
CMQuaternion quaternion = newMotion.attitude.quaternion;
GLKQuaternion conjugated_quaternion = GLKQuaternionMake(quaternion.x, quaternion.y, quaternion.z, quaternion.w);
conjugated_quaternion = GLKQuaternionConjugate(conjugated_quaternion);
//Rotation of Accelerometer vector with quanternion
GLKVector3 acceleromationVector = GLKVector3Make(newMotion.userAcceleration.x, newMotion.userAcceleration.y, newMotion.userAcceleration.z);
GLKVector3 accelerometionVector_toReferenceFrame = GLKQuaternionRotateVector3(conjugated_quaternion, acceleromationVector);
//Horizontal Acceleration
float horizontalAcceleration = sqrtf(powf(accelerometionVector_toReferenceFrame.x,2)+powf(accelerometionVector_toReferenceFrame.y,2));
在建议的答案中,应该使用的参考框架是North-East-Down。这是否与CMAttitudeReferenceFrameXMagneticNorthZVertical相同?或者可能是这是wron参考框架,因此这种实现的结果是错误的?
您正在寻找一种算法,而不是设备本身的功能。我不相信任何苹果的iDevice中都有一个功能可以让你获得当前的**减速/加速**
使用运动方程:a = (Vf - Vi) / t
这就是我要做的de / acceleration:
Vf = d/t
说汽车在10秒内移动了10公里(这是以米为单位的d distance
)(这是几秒钟内的t time
)你应该能够获得最终速度Vf
。Vi = 0
然后通过分配current-Vi = previous-Vf
来跟踪它a = (Vf - Vi) / t
记住减速只是负加速度
编辑:您还可以使用userAcceleration
中定义的CMDeviceMotion.h