Определить положение перед кватернионом с помощью GLM?

Есть ли способ рассчитать положение XYZ перед вращением кватерниона (XYZW), предпочтительно используя GLM?

Я знаю вращение Quat и положение объекта, для которого я хочу рассчитать положение перед.

Я знаю, как рассчитать положение перед матрицей вращения, где у вас есть вектор Front, вектор Up и Right, но в этом случае у меня есть только значения XYZW (где W всегда равно 0, я никогда не вижу, чтобы оно стало 1 .. ?)

Короче говоря:
Данные у меня есть: Quat (X Y Z W) а также Position(X Y Z) и я хочу рассчитать PositionInFront(Position, Quat, Distance, &X, &Y, &Z)

Как достичь этой цели?

Я попытался привести к 3x3matrix и выполнить вычисления Up, Right, Front (потому что приведение матрицы 3×3 — это эти значения, верно?), Но они не возвращают правильные позиции.

Или можно было бы определить объекты Z Angle? (вращение вокруг мировой оси Z / высота только)

0

Решение

Казалось, что для автомобиля было еще 2 кватернионных конструкции, которые я забыл использовать. и эти 3 являются полным набором, необходимым для формулы вычисления Front, Right, Up:

    float offX = 10.0f;
float offY = 0.0f;
float offZ = 0.0f;

float x = offX * info.Rotation.Front.x + offY * info.Rotation.Right.x + offZ * info.Rotation.Up.x + info.Pos.x;
float y = offX * info.Rotation.Front.y + offY * info.Rotation.Right.y + offZ * info.Rotation.Up.y + info.Pos.y;
float z = offX * info.Rotation.Front.z + offY * info.Rotation.Right.z + offZ * info.Rotation.Up.z + info.Pos.z;

float Angle = (atan2(x-info.Pos.x, y-info.Pos.y) * 180.0f / PI);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]