У кватернионов вместо этого есть проблема «двойного покрытия» (к счастью, не такая страшная). В любом случае, вам нужно сравнить «расстояние» между двумя ориентациями, которое не особенно тривиально с любым из представлений.
у добиться следующего:
Я хочу, чтобы пользователь мог «записывать» движение iPhone с помощью гироскопа. И после этого пользователь должен иметь возможность повторить то же движение. Я извлекаю тангаж, крен и рыскание, используя:
[self.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler: ^(CMDeviceMotion *motion, NSError *error)
{
CMAttitude *attitude = motion.attitude;
NSLog(@"pitch: %f, roll: %f, yaw: %f]", attitude.pitch, attitude.roll, attitude.yaw);
}];
Я думаю, что я мог бы сохранить эти значения в массиве, если пользователь находится в режиме записи. И когда пользователь пытается воспроизвести это движение, я могу сравнить реплицированный массив движений с записанным.Дело в том, как я могу разумно сравнить два массива? Они никогда не будут иметь одинаковые значения, но они могут быть примерно одинаковыми.
Я здесь на правильном пути?
ОБНОВИТЬ: Я думаю, что, возможно, ответ Алиса об использовании DTW может быть правильным для меня здесь. Но я не такой умный (очевидно), поэтому, если бы кто-нибудь мог помочь мне с первыми шагами по сравнению с массивами, я был бы счастливым человеком!
Спасибо!