Create an hgtransform graphics object
h = hgtransform h = hgtransform('PropertyName
',PropertyValue. )
Description
h = hgtransform creates an hgtransform object and returns its handle.
h = hgtransform(' PropertyName ',PropertyValue. ) creates an hgtransform object with the property value settings specified in the argument list.
Hgtransform objects can contain other objects and thereby enable you to treat the hgtransform and its children as a single entity with respect to visibility, size, orientation, etc. You can group objects together by parenting them to a single hgtransform object (i.e., setting the object's Parent property to the hgtransform object's handle). For example,
h = hgtransform; surface('Parent',h. )
The primary advantage of parenting objects to an hgtransform object is that it provides the ability to perform transformations (e.g., translation, scaling, rotation, etc.) on the child objects in unison.
An hgtransform object can be the parent of any number of axes children including other hgtransform objects.
The parent of an hgtransform object is either an axes object or another hgtransform.
Although you cannot see an hgtransform object, setting its Visible property to off makes all its children invisible as well.
Note Many plotting functions clear the axes (i.e., remove axes children) before drawing the graph. Clearing the axes also deletes any hgtransform objects in the axes. |
Transforming a Group of Objects
This example shows how to create a 3-D star with a group of surface objects parented to a single hgtransform object. The hgtransform object is then rotated about the z-axis while its size is scaled.
Note If you are using the MATLAB help browser, you can run this example or open it in the MATLAB editor. |
ax = axes('XLim',[-1.5 1.5],'YLim',[-1.5 1.5]. 'ZLim',[-1.5 1.5]); view(3); grid on; axis equal
[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)
set(gcf,'Renderer','opengl') drawnow
Rz = eye(4); Sxy = Rz;
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 hgtransform Matrix property
set(t,'Matrix',Rz*Sxy) drawnow end pause(1)
set(t,'Matrix',eye(4))
Transforming Objects Independently
This example creates two hgtransform objects to illustrate how each can be transformed independently within the same axes. One of the hgtransform objects has been moved (by translation) away from the origin.
Note If you are using the MATLAB help browser, you can run this example or open it in the MATLAB editor. |
ax = axes('XLim',[-2 1],'YLim',[-2 1],'ZLim',[-1 1]); view(3); grid on; axis equal
[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 = hgtransform('Parent',ax); t2 = hgtransform('Parent',ax);
set(gcf,'Renderer','opengl')
set(h,'Parent',t1) h2 = copyobj(h,t2);
Txy = makehgtform('translate',[-1.5 -1.5 0]); set(t2,'Matrix',Txy) drawnow
% rotate 5 times (2pi radians = 1 rotation)
for r = 1:.1:20*pi% Form z-axis rotation matrix
Rz = makehgtform('zrotate',r);% Set transforms for both hgtransform objects
set(t1,'Matrix',Rz) set(t2,'Matrix',Txy*inv(Rz)*I) drawnow end
Setting Default Properties
You can set default hgtransform properties on the axes, figure, and root levels:
set(0,'DefaultHgtransformPropertyName',propertyvalue. ) set(gcf,'DefaultHgtransformPropertyName',propertyvalue. ) set(gca,'DefaultHgtransformPropertyName',propertyvalue. )
where PropertyName is the name of the hgtransform property and propertyvalue is the value you are specifying. Use set and get to access hgtransform properties.
For more information about transforms, see Tomas Moller and Eric Haines, Real-Time Rendering, A K Peters, Ltd., 1999.
Group Objects for more information and examples.
hgsave | Hgtransform Properties |
© 1994-2005 The MathWorks, Inc.