Задать вопрос
  • Как преобразовать кватернион в сферические углы вращения?

    @syrov
    пишу программы до 99 строк
    В любой книге по 3d графике, например для разработчиков игр. В данном примере происходит следующее. Кватернион это поворот вокруг вектора, он нормализованный, т.е. его длина равна 1, и еще в нем, в отличии от 3d вектора есть четвертая координата, таким образом это 4d вектор. Если скажем, что вектор вокруг которого происходит поворот V и угол alpha, то q == { sin(alpha / 2) * V.x, sin(alpha / 2) * V.y, sin(alpha / 2) * V.z), cos(alpha / 2) }. Первая строчка, собственно выделяет четвертый компонент, хотя вернее будет:
    half_cos_alpha = q->w;
    Вторая строчка получает синус полуугла, по теореме Пифагора, и с учетом, что V является единичным вектором, т.о:
    half_sin_alpha = sqrt(1.0 - half_cos_alpha * half_cos_alpha)
    И так далее :) (учитывая, что текст явно не полный и sa вообще не инициализирована). Идея, наверное, повернуть точку (единичный вектор) {0, 0, 1} с помощью этого кватерниона, а потом определить широту и долготу этой точки (как единичного вектора).
    Ответ написан
    Комментировать