Объект преобразования Matrix
свойство применяет преобразование дочерним элементам всего объекта в унисон. Преобразовывает включают вращение, перевод и масштабирование. Задайте преобразование с четырьмя четырьмя матрицей преобразования.
makehgtform
функция упрощает конструкцию матриц, чтобы выполнить вращение, перевод и масштабирование. Для получения информации о создании преобразовывают матрицы с помощью makehgtform
, смотрите Преобразования Вложенного множества для Комплексных Перемещений.
Вращение преобразовывает, следуют, правило правой руки — вращают объекты о x - y-, или ось z, с положительными углами, вращающимися против часовой стрелки, при наблюдении вдоль соответствующей оси к источнику. Если угол вращения является тетой, следующая матрица задает вращение теты об оси X.
Чтобы создать матрицу преобразования для вращения вокруг произвольной оси, используйте makehgtform
функция.
Перевод преобразовывает объекты перемещения относительно их текущих местоположений. Задайте перевод как расстояния tx, ty, и tz в модулях пространства данных. Следующая матрица показывает местоположение этих элементов в матрице преобразования.
Преобразования масштабирования изменяют размеры объектов. Задайте масштабные коэффициенты sx, sy, и sz и создайте следующую матрицу.
Вы не можете использовать масштабные коэффициенты, меньше чем или равные нулю.
Преобразование по умолчанию является единичной матрицей, которую можно создать с eye
функция. Вот единичная матрица.
Смотрите Отменяющий, преобразовывают операции.
Перспектива преобразовывает, изменяют расстояние, на котором вы просматриваете объект. Следующая матрица является примером перспективы, преобразовывают матрицу, которую не позволяет графика MATLAB®.
В этом случае py является перспективным фактором.
Сдвиньте преобразовывает, сохраняют все точки вдоль данной линии (или плоскость, в 3-D координатах) зафиксированный при сдвиге всех других точек, параллельных линии (плоскость), пропорциональная их перпендикулярному расстоянию от фиксированной линии (плоскость). Следующая матрица является примером сдвига, преобразовывают матрицу, который hgtransform
не позволяет.
В этом случае sx является фактором сдвига и может заменить любой нулевой элемент в единичной матрице.
Преобразовывает заданы в свободных членах, не относительно текущего преобразования. Например, если вы применяете преобразование, которое переводит объект преобразования 5 модулей в направлении X, и затем вы применяете другого преобразование, которое переводит его 4 модуля в направлении Y, получившееся положение объекта является 4 модулями в направлении Y от его исходного положения.
Если вы хотите, преобразовывает, чтобы накопиться, необходимо конкатенировать, индивидуум преобразовывает в одну матрицу. Смотрите Объединяющиеся Преобразования в Одну Матрицу.
Обычно более эффективно объединиться различный, преобразовывают операции в одну матрицу путем конкатенации (умножение) отдельных матриц и установка Matrix
свойство к результату. Умножение матриц не является коммутативным, таким образом, порядок, в котором вы умножаете матрицы, влияет на результат.
Например, предположите, что вы хотите выполнить операцию, которая масштабирует, переводит, и затем вращается. Принятие R
T
и S
ваши отдельные матрицы преобразования, умножают матрицы можно следующим образом:
C = R*T*S % operations are performed from right to left
S
масштабирующаяся матрица, T
матрица перевода, R
матрица вращения и C
составной объект этих трех операций. Затем установите объект преобразования Matrix
свойство к C
:
hg = hgtransform('Matrix',C);
Следующие наборы операторов не эквивалентны. Первый набор:
hg.Matrix = C; hg.Matrix = eye(4);
результаты в удалении преобразования C. Второй набор:
I = eye(4); C = I*R*T*S; hg.Matrix = C;
применяет преобразование C
. Конкатенация единичной матрицы к другим матрицам не оказывает влияния на составную матрицу.
Поскольку преобразовывают операции, заданы в свободных членах (не относительно текущего преобразования), можно отменить серию преобразований путем установки текущего преобразования на единичную матрицу. Например:
hg = hgtransform('Matrix',C); ... hg.Matrix = eye(4);
возвращает объекты, содержавшие в объекте преобразования, hg
, к их ориентации прежде, чем применять преобразование C
.
Для получения дополнительной информации о единичной матрице смотрите eye
функция
eye
| hgtransform
| makehgtform