numeric::rotationMatrix

Ортогональная матрица вращения вокруг оси

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

numeric::rotationMatrix(angle, axis, <Symbolic>, <ReturnType = t>)

Описание

numeric::rotationMatrix(angle, axis) возвращает ортогональную матрицу, соответствующую вращению вокруг данной оси данным углом.

Вращение углом alpha об оси, данной вектором [x, y, z] Евклидовой длины 1, дано матрицей вращения

с c = cos (alpha), s = sin (alpha) и t = 1 - c =.

Вращение реализовано после “правила правой руки”: Расширьте ползунок правой руки и изогните пальцы. Когда точки ползунка в направление оси вращения, ваши кончики пальцев указывают на направление вращения.

Используйте отрицательные углы, чтобы вращаться в противоположном направлении.

Параметр оси стандартной программы не должен быть нормирован к Евклидовой длине 1. Однако это не должно иметь нулевой длины.

Если никакие не возвращаются, тип задан с помощью опции ReturnType = t, доменный тип результата зависит от типа входной матрицы axis:

  • Если ось имеет доменный массив типа, то матрица вращения возвращена как массив.

  • Если ось имеет доменный тип hfarray, то результат возвращен как hfarray.

  • Если ось имеет доменный тип Dom::DenseMatrix(), затем матрица вращения возвращена как матрица типа Dom::DenseMatrix() по звонку выражений MuPAD®.

  • Если ось имеет какой-либо различный матричный тип, результатом является matrix из типа Dom::Matrix() по звонку выражений MuPAD. Это включает входные матрицы axis из типа Dom::Matrix(...), Dom::SquareMatrix(...), Dom::MatrixGroup(...) и т.д.

  • Если ось является списком с 3 элементами, матрица вращения также возвращена как Dom::Matrix() по звонку выражений MuPAD.

Без опции Symbolic, все аргументы автоматически преобразованы в аргументы с плавающей точкой (если возможный). Используйте опцию Symbolic если никакое такое преобразование не желаемо.

Взаимодействия среды

Функция чувствительна к переменной окружения DIGITS, который определяет числовую рабочую точность.

Примеры

Пример 1

Вращение вокруг оси z 45 градусами дано следующей матрицей:

numeric::rotationMatrix(PI/4, [0, 0, 1])

Приняты символьные аргументы:

numeric::rotationMatrix(a, [1, 2, 3])

С опцией Symbolic, никакое автоматическое преобразование в числа с плавающей запятой не происходит:

numeric::rotationMatrix(a, [1, 2, 3], Symbolic)

Пример 2

Тип возврата совпадает с типом входного параметра, представляющего ось:

numeric::rotationMatrix(0.3, matrix([1,2,3]))

domtype(%)

numeric::rotationMatrix(0.3, hfarray(1..3, [1,2,3]))

domtype(%)

Опция ReturnType позволяет задавать тип результата:

numeric::rotationMatrix(0.3, hfarray(1..3, [1,2,3]),
                                ReturnType = matrix)

domtype(%)

Пример 3

Направление вращения дано “правилом правой руки”: Расширьте ползунок правой руки и изогните пальцы. Когда точки ползунка в направление оси вращения, ваши кончики пальцев указывают на направление вращения:

axis := matrix([0, 0, 1]):
vector := matrix([1, 0, 0]):
Q := numeric::rotationMatrix(PI/4, axis):
plot(plot::Arrow3d(axis, Color = RGB::Blue),
     plot::Arrow3d(vector, Color = RGB::Red),
     plot::Arrow3d(Q*vector, Color = RGB::Red),
     plot::Text3d("axis", [0.01, 0.01, 0.5]),
     plot::Text3d("vector", [1.05, 0, 0]),
     plot::Text3d("rotated vector", [0.75, 0.75, 0]),
     CameraDirection = [1, -2, 4], 
     Scaling = Constrained, Axes = None):

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

axis := matrix([0, 0, 1]):
vector := matrix([1, 0, 0]):
Q := numeric::rotationMatrix(-PI/4, axis):
plot(plot::Arrow3d(axis, Color = RGB::Blue),
     plot::Arrow3d(vector, Color = RGB::Red),
     plot::Arrow3d(Q*vector, Color = RGB::Red),
     plot::Text3d("axis", [0.01, 0.01, 0.5]),
     plot::Text3d("vector", [1.05, 0, 0]),
     plot::Text3d("rotated vector", [0.75, -0.75, 0]),
     CameraDirection = [1, -2, 4], 
     Scaling = Constrained, Axes = None):

delete axis, vector, Q:

Параметры

angle

Арифметическое выражение

axis

Вектор, представленный списком с 3 записями или 3 ×1 матрицами доменный тип DOM_ARRAY, DOM_HFARRAY, или категории Cat::Matrix

Опции

Symbolic

Предотвращает преобразование входных данных к числам с плавающей запятой. Точная арифметика используется.

ReturnType

Опция, заданная как ReturnType = t

Возвратите результат как матрицу доменного типа t. Следующее возвращается, типы доступны: DOM_ARRAY, DOM_HFARRAY, matrix, или densematrix.

Возвращаемые значения

В зависимости от типа входной матрицы axis, 3×3 матрица вращения возвращена как матрица доменного типа DOM_ARRAY, DOM_HFARRAY, Dom::Matrix(), или Dom::DenseMatrix().

Для просмотра документации необходимо авторизоваться на сайте