Я пытаюсь повернуть вектор с помощью кватерниона, построенного с помощью Quaternion.Euler(x,y,z)
, он работает, как и ожидалось, но проблема в том, что вращение выполняется относительно мировой системы координат, тогда как я хочу повернуть относительно самого вектора.
Итак, я хочу принять систему координат как
z = vector's direction,
x = vector's perpendicular (any)
y = world y.
поэтому мой код таков:
myVector = euler * myVector;
однако мне нужно
myVector = localEuler * myVector;
поэтому мне нужно вычислить localEuler
как функцию euler
и myVector
.
Как я могу это сделать ?
Спасибо за любую помощь!
Я попытался :
localEuler = Quaternion.Euler(euler.x * myVector.x ,euler.y * myVector.y ,euler.z * myVector.z );
это не сработало. Я думаю, это точечный продукт.
P.S.
Я думаю, что у этого есть встроенный код для Transform
s : Transform.RotateAround()
, но мне нужно сделать это с Vector3
, а не с Transform
.