J'essaie de trouver un angle précis (a) montrer dans l'image ci-dessous.Comment calculer et obtenir la valeur lisse pour la hauteur?
En faisant des recherches, je comprends que je peux obtenir l'angle à l'aide CMotionManger. J'ai créé une classe singleton qui me donnera des mises à jour concernant le mouvement de l'appareil. Et obtenir le « Pas » valeur à l'aide CMQuaternion
Pour mieux comprendre ce que « Pitch » est par rapport à l'axe, reportez-vous ci-dessous l'image.
Voici mon code dans lequel je reçois la valeur attendue de pitch.is manière correcte de trouver l'angle indiqué en 1ère image?
- (void) startMotionUpdate {
if (self.motionManager == nil) {
self.motionManager = [[CMMotionManager alloc] init];
}
self.motionManager.deviceMotionUpdateInterval = kUpdateInterval;
[self.motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXArbitraryZVertical
toQueue:self.deviceQueue
withHandler:^(CMDeviceMotion *motion, NSError *error)
{
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
CGFloat x = motion.gravity.x;
CGFloat y = motion.gravity.y;
CGFloat z = motion.gravity.z;
CMQuaternion quat = self.motionManager.deviceMotion.attitude.quaternion;
double yaw = asin(2*(quat.x*quat.z - quat.w*quat.y));
DLog(@"Yaw ==> %f", yaw);
double myPitch = radiansToDegrees(atan2(2*(quat.x*quat.w + quat.y*quat.z), 1 - 2*quat.x*quat.x - 2*quat.z*quat.z));
DLog(@"myPitch ==> %.2f degree", myPitch);
self.motionLastPitch = myPitch;
}];
}];
}
Connexion Je reçois cette impression:
[Line 64] myPitch ==> 74.71 degree
[Line 60] Yaw ==> -0.037314
[Line 64] myPitch ==> 74.68 degree
[Line 60] Yaw ==> -0.037849
[Line 64] myPitch ==> 74.67 degree
[Line 60] Yaw ==> -0.038531
[Line 64] myPitch ==> 74.69 degree
[Line 60] Yaw ==> -0.038637
[Line 64] myPitch ==> 74.71 degree
[Line 60] Yaw ==> -0.037314
[Line 64] myPitch ==> 74.68 degree
[Line 60] Yaw ==> -0.037849
[Line 64] myPitch ==> 75.65 degree
[Line 60] Yaw ==> -0.038531
[Line 64] myPitch ==> 76.90 degree
[Line 60] Yaw ==> -0.038637
J'ai essayé de placer mon téléphone selon la première image, donc est les valeurs sont justes? Si oui, comment puis-je obtenir les valeurs stables pour Pitch?
Toute aide/Idea/assistance vous sera utile.