Вращение кватерниона без углов Эйлера

Вэтот комментарий было настоятельно предложено, чтобы мы никогда не использовали углы Эйлера. Я понимаю, что есть некоторые ограничения на углы Эйлера, в частности, карданный замок, но яВы хотели бы знать лучшую технику или набор техник, которые обычно используются при отсутствии углов Эйлера? Большинство рассуждений на эту тему включают преобразование угла Эйлера в кватернион, и это очень просто. Но единственный способ, которым я когда-либо читал о том, чтобы делать вращение без углов Эйлера, - это создать кватернион из двух векторов, как описано в статье "Самая короткая дуга кватерниона » Стэн Мелакс в "Игровое программирование Gems », используя эту технику:

template 
inline QuaternionT QuaternionT::CreateFromVectors(const Vector3& v0, const Vector3& v1)
{

    Vector3 c = v0.Cross(v1);
    T d = v0.Dot(v1);
    T s = std::sqrt((1 + d) * 2);

    QuaternionT q;
    q.x = c.x / s;
    q.y = c.y / s;
    q.z = c.z / s;
    q.w = s / 2.0f;
    return q;
}

Это метод, указанный в связанном комментарии?

Ответы на вопрос(3)

Ваш ответ на вопрос