числовой::Ортогональная матрица вращения вокруг оси
Блокноты 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, который определяет числовую рабочую точность.
Вращение вокруг оси z 45 градусами дано следующей матрицей:
numeric::rotationMatrix(PI/4, [0, 0, 1])

Приняты символьные аргументы:
numeric::rotationMatrix(a, [1, 2, 3])

С опцией Symbolic не происходит никакое автоматическое преобразование в числа с плавающей запятой:
numeric::rotationMatrix(a, [1, 2, 3], Symbolic)

Тип возврата совпадает с типом входного параметра, представляющего ось:
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(%)
![]()
Направление вращения дано “правилом правой руки”: Расширьте ползунок правой руки и изогните пальцы. Когда точки ползунка в направление оси вращения, ваши кончики пальцев указывают на направление вращения:
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:
| |
|
Вектор, представленный списком с 3 записями или 3 ×1 матрицами доменный тип |
|
Предотвращает преобразование входных данных к числам с плавающей запятой. Точная арифметика используется. |
|
Опция, заданная как Возвратите результат как матрицу доменного типа |
В зависимости от типа входной матрицы axis 3×3 матрица вращения возвращена как матрица доменного типа DOM_ARRAY, DOM_HFARRAY, Dom::Matrix() или Dom::DenseMatrix().