| MATLAB Function Reference | ![]() |
h = hgtransform
h = hgtransform('PropertyName',propertyvalue,...)
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 transforms (e.g., translation, scaling, rotation, etc.) on the child objects in unison.
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.
An hgtransform object can be the parent of any number axes children objects belonging to the same axes, with the exception of light objects.
hgtransform objects can never be the parent of axes objects and therefore can contain objects only from a single axes.
hgtransform objects can be the parent of other hgtransform objects within the same axes.
You cannot transform image objects because images are not true 3-D objects. Texture mapping the image data to a surface CData enables you to produce the effect of transforming an image in 3-D space.
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. |
The references in the See Also section for information on types of transforms
The Examples section provides examples that illustrate the use of transforms.
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. |
Create an axes and adjust the view. Set the axes limits to prevent auto limit selection during scaling.
ax = axes('XLim',[-1.5 1.5],'YLim',[-1.5 1.5],...
'ZLim',[-1.5 1.5]);
view(3); grid on; axis equalCreate the objects you want to parent to the hgtransform object.
[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');
Create an hgtransform object and parent the surface objects to it.
t = hgtransform('Parent',ax);
set(h,'Parent',t)
Select a renderer and show the objects.
set(gcf,'Renderer','opengl') drawnow
Initialize the rotation and scaling matrix to the identity matrix (eye).
Rz = eye(4); Sxy = Rz;
Form the z-axis rotation matrix and the scaling matrix. Rotate 360 degrees (2*pi radians) and scale by using the increasing values of 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 hgtransform Matrix property set(t,'Matrix',Rz*Sxy) drawnow end pause(1)
Reset to the original orientation and size using the identity matrix.
set(t,'Matrix',eye(4))
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. |
Create and set up the axes object that will be the parent of both hgtransform objects. Set the limits to accommodate the translated object.
ax = axes('XLim',[-2 1],'YLim',[-2 1],'ZLim',[-1 1]);
view(3); grid on; axis equalCreate the surface objects to group.
[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');
Create the hgtransform objects and parent them to the same axes.
t1 = hgtransform('Parent',ax);
t2 = hgtransform('Parent',ax);Set the renderer to use OpenGL.
set(gcf,'Renderer','opengl')
Parent the surfaces to hgtransform t1, then copy the surface objects and parent the copies to hgtransform t2.
set(h,'Parent',t1) h2 = copyobj(h,t2);
Translate the second hgtransform object away from the first hgtransform object and display the result.
Txy = makehgtform('translate',[-1.5 -1.5 0]);
set(t2,'Matrix',Txy)
drawnowRotate both hgtransform objects in opposite directions. Hgtransform t2 has already been translated away from the origin, so to rotate it about its z-axis you must first translate it to its original position. You can do this with the identity matrix (eye).
% rotate 10 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
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.
Hgtransform Properties for property descriptions
![]() | hgsetget | Hgtransform Properties | ![]() |
| © 1984-2008- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |