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® графика не допускает.
В этом случае p x является перспективным фактором.
Преобразования сдвига сохраняют все точки вдоль заданной линии (или плоскости, в 3-D координатах) фиксированными, смещая все другие точки параллельно линии (плоскости), пропорциональные их перпендикулярному расстоянию от фиксированной линии (плоскости). Следующая матрица является примером матрицы преобразования сдвига, которая hgtransform
не разрешает.
В этом случае 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
функция
eye
| hgtransform
| makehgtform