hgtransform

Создайте объект преобразования

Синтаксис

h = hgtransform
h = hgtransform('PropertyName',propertyvalue,...)
h = hgtransform(ax,...)

Свойства

Список свойств см. в разделе «Свойства преобразования».

Описание

h = hgtransform создает Transform и возвращает его указатель.

h = hgtransform('PropertyName',propertyvalue,...) создает Transform объект с параметрами значения свойства, заданными в списке аргументов. Описание свойств см. в разделе «Свойства преобразования».

h = hgtransform(ax,...) создает Transform объект в заданных ax осях вместо в текущей системе координат (gca). Опция ax может предшествовать любой комбинации входных аргументов в предыдущих синтаксисах.

Transform объекты могут содержать другие объекты, что позволяет обрабатывать Transform объект и его дочерние элементы как одна сущность в отношении видимости, размера, ориентации и т.д. Можно сгруппировать объекты, родив их в одну Transform объект (т.е. установка параметров объекта Parent свойство указателю на объект преобразования):

h = hgtransform;
surface('Parent',h,...)

Основное преимущество родительских объектов для Transform объект является тем, что вы можете выполнить преобразования (для примера, перемещение, масштабирование, вращение и т.д.) для дочерних объектов в унисон.

Родительский элемент Transform объект является либо Axes объект или другое Transform объект.

Хотя вы не можете увидеть Transform объект, установка его Visible свойство к off делает невидимыми и всех его детей.

Исключения и ограничения

  • A Transform объект может быть родительским элементом любого количества дочерних объектов осей, принадлежащих одной и той же оси, за исключением световых объектов.

  • Transform объекты никогда не могут быть родительским элементом объектов осей и поэтому могут содержать объекты только с одной оси.

  • Transform объекты могут быть родительским элементом других объектов преобразования в тех же осях.

  • Вы не можете преобразовать Image объекты, поскольку изображения не являются true 3-D объектов. Текстура, сопоставляющая данные изображения с поверхностью CData позволяет вам создать эффект преобразования изображения в трехмерном пространстве.

  • Преобразования не влияют на текстовые объекты, если только текстовый объект не использует модулей измерения данных. Если a Text объект имеет положение, заданное в единицах данных, затем преобразование перемещает нижний левый угол текста. Преобразование не влияет на размер или ориентацию шрифта. Чтобы изменить размер и ориентацию шрифта, используйте текстовые свойства.

Примечание

Многие функции построения графика очищают оси (удаляют дочерние элементы осей) перед рисованием графика. Очистка осей также удаляет любые Transform объекты в осях.

Примеры

свернуть все

В этом примере показано, как создать 3-D звезду с группой поверхностных объектов, помеченных как один объект преобразования. Объект преобразования затем поворачивает объект вокруг оси Z с одновременным масштабированием его размера.

Создать оси и настроить вид. Установите пределы осей, чтобы предотвратить автоматический выбор предела во время масштабирования.

ax = axes('XLim',[-1.5 1.5],'YLim',[-1.5 1.5],'ZLim',[-1.5 1.5]);
view(3)
grid on

Создайте объекты, которые вы хотите родить с объектом преобразования.

[x,y,z] = cylinder([.2 0]);
h(1) = surface(x,y,z,'FaceColor','red');
h(2) = surface(x,y,-z,'FaceColor','green');
h(3) = surface(z,x,y,'FaceColor','blue');
h(4) = surface(-z,x,y,'FaceColor','cyan');
h(5) = surface(y,z,x,'FaceColor','magenta');
h(6) = surface(y,-z,x,'FaceColor','yellow');

Создайте объект преобразования и родительский элемент ему поверхностных объектов. Инициализируйте матрицу поворота и масштабирования в матрицу тождеств (глаз).

t = hgtransform('Parent',ax);
set(h,'Parent',t)

Rz = eye(4);
Sxy = Rz;

Сформируйте матрицу поворота оси Z и матрицу масштабирования. Поверните группу и шкалу с помощью увеличивающихся значений r.

for r = 1:.1:2*pi
    % Z-axis rotation matrix
    Rz = makehgtform('zrotate',r);
    % Scaling matrix
    Sxy = makehgtform('scale',r/4);
    % Concatenate the transforms and
    % set the transform Matrix property
    set(t,'Matrix',Rz*Sxy)
    drawnow
end
pause(1)

Сбросьте к исходной ориентации и размеру с помощью матрицы тождеств.

set(t,'Matrix',eye(4))

Этот пример создает два объектов преобразования, чтобы проиллюстрировать, как преобразовать каждый независимо внутри одних и тех же осей. Преобразование преобразования смещает один объект преобразования от источника.

Создайте и настройте объект осей, который будет родительским элементом обоих объектов преобразования. Установите пределы, чтобы разместить переведенный объект.

ax = axes('XLim',[-3 1],'YLim',[-3 1],'ZLim',[-1 1]);
view(3)
grid on

Создайте объекты поверхности для группирования.

[x,y,z] = cylinder([.3 0]);
h(1) = surface(x,y,z,'FaceColor','red');
h(2) = surface(x,y,-z,'FaceColor','green');
h(3) = surface(z,x,y,'FaceColor','blue');
h(4) = surface(-z,x,y,'FaceColor','cyan');
h(5) = surface(y,z,x,'FaceColor','magenta');
h(6) = surface(y,-z,x,'FaceColor','yellow');

Создайте объекты преобразования и родите их с теми же осями. Затем родите поверхности, чтобы преобразовать t1. Скопируйте объекты поверхности и родительский элемент копий в преобразование t2. Этот рисунок не должна меняться.

t1 = hgtransform('Parent',ax);
t2 = hgtransform('Parent',ax);

set(h,'Parent',t1)
h2 = copyobj(h,t2);

Переведите второй объект преобразования от первого объекта преобразования и отобразите результат.

Txy = makehgtform('translate',[-1.5 -1.5 0]);
set(t2,'Matrix',Txy)
drawnow

Поверните оба объектов преобразования в противоположных направлениях.

Поверните 10 раз (2pi радианы = 1 вращение)

for r = 1:.1:20*pi
    % Form z-axis rotation matrix
    Rz = makehgtform('zrotate',r);
    % Set transforms for both transform objects
    set(t1,'Matrix',Rz)
    set(t2,'Matrix',Txy*inv(Rz))
    drawnow
end

Представлено до R2006a