hgtransform

Создайте преобразовывают объект

Синтаксис

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

Свойства

Для списка свойств смотрите Transform Properties.

Описание

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

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

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

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

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

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

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

Несмотря на то, что вы не видите Transform объект, устанавливая его Visible свойство к off делает всю его дочернюю невидимую операцию также.

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

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

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

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

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

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