Свойство 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
функционирует