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

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

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

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

makehgtform функция упрощает конструкцию матриц для выполнения вращения, перемещения и масштабирования. Для получения информации о создании матриц преобразования с помощью makehgtform, см. Nest Transforms for Complex Movements.

Вращение

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

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

Перевод

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

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

Масштабные преобразования изменяют размеры объектов. Задайте масштабные коэффициенты s x, s y и s z и создайте следующую матрицу.

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

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

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

См. «Отмена операций преобразования».

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

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

[10000100001000px0]

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

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

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

[1sx00010000100001]

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

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

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

См. также

| |

Похожие темы