Matrix.RotateAt в Unity3d - PullRequest
       5

Matrix.RotateAt в Unity3d

0 голосов
/ 26 декабря 2018

Я пытался создать матрицу вращения вокруг указанного центра в Unity3d , но класс Matrix4x4 не предоставляет никаких функций, которые позволяют мне это делать, дажехотя C # предоставляет функцию с именем:

public void RotateAt (двойной угол, двойной центрX, двойной центр Y);

, который находится в System.Windows.Media пространство имен, но недоступно в Unity3d , есть ли способ создать такую ​​же матрицу вращения в Unity3d?Спасибо.

1 Ответ

0 голосов
/ 26 декабря 2018

Создание матрицы вращения вокруг точки можно выполнить, выполнив следующие действия:

  • Переместите эту матрицу в точку, в которой вы хотите ее вращать.
  • Поверните матрицу.
  • Переведите матрицу обратно в начало координат.

Это примерно означает:

// Set the following variables according to your setup
Vector3 centerOfRotation = ...;
float angleOfRotation = ...;
Vector3 rotationAxis = ...;

// This should calculate the resulting matrix, as described in the answer
Matrix4x4 translationToCenterPoint = Matrix4x4.Translate(centerOfRotation);
Matrix4x4 rotation = Matrix4x4.Rotate(Quaternion.AngleAxis(angleOfRotation, rotationAxis));
Matrix4x4 translationBackToOrigin = Matrix4x4.Translate(-centerOfRotation);

Matrix4x4 resultMatrix = translationToCenterPoint * rotation * translationBackToOrigin;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...