gazes12
@gazes12

Как имея позицию и направление двух объектов в пространстве координат y, x, z, повернуть один объект в другой?

Хочу сделать наводку одного объекта в другой. Я имею позицию двух объектов и направление в формате x, y , z.
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
@MarkusD
все время мелю чепуху :)
Решением вопроса будет скалярное произведение двух векторов. Операция еще называется Dot Product.

Скалярное произведение позволяет узнать косинус угла между двумя нуль-векторами. Позиции обоих объектов надо привести к единой локальной системе координат. В твоем случае это должна быть локальная система координат объекта, который нужно вращать. Первый нуль-вектор берется из любой оси в нужной плоскости вращения текущей матрицы поворота объекта. Второй нуль-вектор берется через приведение глобальной позиции второго объекта в локальную систему координат первого.
Далее полученные вектора нормализуются, берется их скалярное произведение и делается доворот матрицы вращения первого объекта на арккосинус результата произведения.

В качестве бонуса.
Чтобы определить направление вращения, можно воспользоваться векторным произведением, еще называемым Cross Product.

Векторное произведение трехмерных векторов позволяет определить нормаль к плоскости, образованной этими векторами. Нормаль будет направлена в одном из двух направлений от плоскости, в зависимости от расположения нуль-векторов относительно друг друга. Если в качестве левого аргумента взять все тот же нуль-вектор локального объекта, а в качестве правого - тот же нуль-вектор целевого, результатом произведения будет ось, вдоль которой и нужно выполнять доворот матрицы вращения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы