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 (i. e., устанавливая свойство Parent объекта на указатель объекта преобразования):

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

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

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

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

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

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

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

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

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

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

Copyright 2015 The MathWorks, Inc.

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

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

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

Copyright 2015 The MathWorks, Inc.

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

Была ли эта тема полезной?