##### Когда мы умножаем Quaternion на вектор мы поворачиваем вектор туда, куда смотрит Quaternion? Да, когда мы умножаем [Quaternion](Кватернион.md) на вектор, мы поворачиваем вектор в том направлении, куда смотрит Quaternion. [Кватернион](Кватернион.md) представляет собой способ представления поворота в трехмерном пространстве. Он содержит информацию о том, как повернуть одну систему координат относительно другой. При умножении Quaternion на вектор, мы применяем этот поворот к вектору. В Unity, когда мы работаем с компонентами Transform, мы используем Quaternion для представления поворота объекта. Например, чтобы повернуть объект на 90 градусов вокруг оси Y, мы можем использовать следующий код: ```csharp transform.rotation *= Quaternion.Euler(0.0f, 90.0f, 0.0f); ``` Этот код повернет объект на 90 градусов вокруг оси Y, изменяя значение transform.rotation. Затем, когда мы умножаем transform.rotation на вектор, мы поворачиваем этот вектор в направлении, куда смотрит новое значение transform.rotation. Вот пример кода, который поворачивает вектор Vector3.forward на 90 градусов вокруг оси Y: ```csharp Quaternion rotation = Quaternion.Euler(0.0f, 90.0f, 0.0f); Vector3 rotatedVector = rotation * Vector3.forward; ``` В этом примере мы создаем новый Quaternion, который поворачивает объект на 90 градусов вокруг оси Y, используя функцию Quaternion.Euler(). Затем мы умножаем Quaternion на вектор Vector3.forward, чтобы повернуть его в направлении, куда смотрит новый Quaternion. ##### Покажи мне пример с числами, когда мы вектор поворачиваем с помощью кватерниона. Давайте представим, что у вас есть вектор `v = (1, 0, 0)`. Это ваш дочерний объект относительно родителя в локальных координатах. Теперь предположим, что мы хотим повернуть этот вектор вокруг оси Y на 90 градусов. Вращение вокруг оси Y на 90 градусов в Unity можно представить как кватернион `q = Quaternion.Euler(0, 90, 0)`. Теперь, чтобы применить это вращение к вектору, мы просто умножим кватернион на вектор: ```csharp Vector3 vRotated = q * v; ``` После выполнения этой операции, `vRotated` будет равен `(0, 0, -1)`. Что мы здесь видим, это то, что вращение на 90 градусов вокруг оси Y перемещает вектор из позиции `(1, 0, 0)` в позицию `(0, 0, -1)`. Это ожидаемое поведение, поскольку вращение вокруг оси Y поворачивает объекты вдоль оси X вдоль оси Z. Пожалуйста, обратите внимание, что углы в функции `Quaternion.Euler` задаются в градусах, а не в радианах, и вращение производится в порядке Z, X, Y. Примечание от меня: Про вращение написано в заметке «Rotation/Quaternion (Вопросы к GPT)».