1,CMAccelerometerData
实际包含一个结构体acceleration(类型:CMAcceleration),提供三轴加速度值,如下所示:
typedef struct {
double x;
double y;
double z;
} CMAcceleration;
// A structure containing 3-axis acceleration data.
2,CMGyroData
实际包含一个结构体rotationRate(类型:CMRotationRate),提供三轴角速度值,如下所示:
typedef struct {
double x;
double y;
double z;
} CMRotationRate;
// A structure containing 3-axis rotation rate data.
3,CMMagnetometerData
实际包含一个结构体magneticField(类型:CMMagneticField),提供三轴磁力值,如下所示:
typedef struct {
double x;
double y;
double z;
} CMMagneticField;
// A structure containing 3-axis magnetometer data.
4,CMDeviceMotion
包含下面四种数据:
(1)attitude(类型:CMAttitude)
// Returns the attitude of the device.
(2)rotationRate(类型:CMRotationRate)
// Returns the rotation rate of the device for devices with a gyro.
(3)gravity(类型:CMAcceleration)
// Returns the gravity vector expressed in the device's reference frame. Note that the total acceleration of the device is equal to gravity plus userAcceleration.
(4)userAcceleration(类型:CMAcceleration)
// Returns the acceleration that the user is giving to the device. Note that the total acceleration of the device is equal to gravity plus userAcceleration.
总结:
第1类数据:CMAccelerometerData应该是设备总的加速度数据
第2类数据:CMGyroData 设备的三轴角速度数据
第3类数据:CMMagnetometerData设备的三轴磁力数据
第4类数据:CMDeviceMotion 比较特殊:1,重复提供了角速度数据(旋转速率,即陀螺仪的输出);2,把设备总的加速度数据进行了分离(即原始加速度是后面两个的叠加),分离出单纯的重力加速度数据(即重力加速度矢量在当前设备的参考坐标系中的表达,开发中不再需要通过滤波来提取这个信息)和用户加速度数据(不再需要滤波,但根据程序需求而加的滤波算法可以保留);3,提供了设备姿势数据,用于判断手机在当前空间的位置和姿势。