Преобразования, поддерживаемые hgtransform

Преобразование объектов

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