Я оцифровал видео полета мухи в трехмерном пространстве.
Во все моменты времени я знаю координаты x, y и z следующих точек на теле мухи ---
Точки — это мой выбор, и их можно размещать где угодно и сколько угодно раз.
Теперь, используя эти точки, я хочу узнать углы тела (рысканье, тангаж и крен) мухи относительно фиксированной оси.
Я пробовал следующее (что я считаю неправильным).
Я использую Matlab для кодирования вышеуказанной вещи. Я знаю, что это нужно сделать с углами Эйлера, как на рисунке, показанном здесь:
http://mathworld.wolfram.com/EulerAngles.html
Но я не знаю, как поступить со всеми имеющимися у меня 3D-координатами. Небольшое направление поможет.....
Найдите вектор, идущий от хвоста к голове, и нормализуйте его: вызовите результат .
Найдите вектор, соединяющий точку левого крыла с точкой правого крыла, и нормализуйте его: вызовите результат .
Необязательно: проверьте работоспособность
Теперь рассчитайте .
Соберите три вектора как векторы -столбцы в матрицу . Это матрица вращения, которая вращает вашу ссылку основу в основу, выровненную по мухе.
Чтобы преобразовать в углы, нам нужно вычислить ось вращения и угол поворота. Это проще всего сделать, взглянув на формулу Родригеса для общего члена. из "назад"
где:
и
где компоненты оси вращения и угол поворота в радианах. является членом алгебры Ли что возводится в степень к матрице вращения.
Итак, берем матрицу вы нашли выше и сравните его с (1): вы можете видеть в (1), что кососимметричная часть:
и это позволит вам прочитать и угол поворота .
Между прочим, если бы вы делали это, чтобы построить систему слежения за мухой, вам нужно было бы сделать что-то вроде поиска наименьших квадратов, наиболее подходящих для векторов. и : векторы необработанных данных не будут полностью ортогональны из-за зашумленных данных. Кроме того, вы можете выбрать 3 точки на лету, отследить их и найти и как ортогональное основание для трех сторон треугольника. Тогда вам не нужно было бы лучше всего подходить методом наименьших квадратов, но ваше отслеживание может быть менее точным.
Флорис