числовой::
Ортогональная матрица вращения вокруг оси
Блокноты 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()
.