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

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

Объект преобразования Matrix свойство применяет преобразование дочерним элементам всего объекта в унисон. Преобразовывает включают вращение, перевод и масштабирование. Задайте преобразование с четырьмя четырьмя матрицей преобразования.

Создание матрицы преобразования

makehgtform функция упрощает конструкцию матриц, чтобы выполнить вращение, перевод и масштабирование. Для получения информации о создании преобразовывают использование матриц makehgtform, смотрите Преобразования Вложенного множества для Комплексных Перемещений.

Вращение

Вращение преобразовывает, следуют, правило правой руки — вращают объекты о x - y-, или ось z, с положительными углами, вращающимися против часовой стрелки, при наблюдении вдоль соответствующей оси к источнику. Если угол вращения является theta, следующая матрица задает вращение theta об оси X.

Чтобы создать матрицу преобразования для вращения вокруг произвольной оси, используйте makehgtform функция.

Перевод

Перевод преобразовывает объекты перемещения относительно их текущих местоположений. Задайте перевод как расстояния tx, ty, и tz в модулях пространства данных. Следующая матрица показывает местоположение этих элементов в матрице преобразования.

Масштабирование

Преобразования масштабирования изменяют размеры объектов. Задайте масштабные коэффициенты sx, sy, и sz и создайте следующую матрицу.

Вы не можете использовать масштабные коэффициенты, меньше чем или равные нулю.

Преобразование по умолчанию

Преобразование по умолчанию является единичной матрицей, которую можно создать с eye функция. Вот единичная матрица.

Смотрите Отменяющий, преобразовывают операции.

Запрещенные преобразования: Перспектива

Перспектива преобразовывает, изменяют расстояние, на котором вы просматриваете объект. Следующая матрица является примером перспективы, преобразовывают матрицу, который MATLAB® графика не позволяет.

[10000100001000px0]

В этом случае px является перспективным фактором.

Запрещенные преобразования: Сдвиг

Сдвиньте преобразовывает, сохраняют все точки вдоль данной линии (или плоскость, в 3-D координатах) зафиксированный при сдвиге всех других точек, параллельных линии (плоскость), пропорциональная их перпендикулярному расстоянию от фиксированной линии (плоскость). Следующая матрица является примером сдвига, преобразовывают матрицу, который hgtransform не позволяет.

[1sx00010000100001]

В этом случае sx является фактором сдвига и может заменить любой нулевой элемент в единичной матрице.

Абсолютные и относительные преобразования

Преобразовывает заданы в свободных членах, не относительно текущего преобразования. Например, если вы применяете преобразование, которое переводит объект преобразования 5 модулей в направлении X, и затем вы применяете другого преобразование, которое переводит его 4 модуля в направлении Y, получившееся положение объекта является 4 модулями в направлении Y от его исходного положения.

Если вы хотите, преобразовывает, чтобы накопиться, необходимо конкатенировать, индивидуум преобразовывает в одну матрицу. Смотрите Объединяющиеся Преобразования в Одну Матрицу.

Объединение преобразований в одну матрицу

Обычно более эффективно объединиться различный, преобразовывают операции в одну матрицу путем конкатенации (умножение) отдельных матриц и установка Matrix свойство к результату. Умножение матриц не является коммутативным, таким образом, порядок, в котором вы умножаете матрицы, влияет на результат.

Например, предположите, что вы хотите выполнить операцию, которая масштабирует, переводит, и затем вращается. Принятие RT и 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 функция

Смотрите также

| |

Похожие темы