| MATLAB Function Reference | ![]() |
Use the Rotate3D tool
on the figure toolbar to enable
and disable rotate3D mode on a plot, or select Rotate
3D from the figure's Tools menu. For details, see Rotate 3D — Interactive Rotation of 3-D Views in the MATLAB® Graphics documentation.
rotate3d
rotate3d
rotate3d
rotate3d(figure_handle,...)
rotate3d(axes_handle,...)
h = rotate3d(figure_handle)
rotate3d on enables mouse-base rotation on all axes within the current figure.
rotate3d off disables interactive axes rotation in the current figure.
rotate3d toggles interactive axes rotation in the current figure.
rotate3d(figure_handle,...) enables rotation within the specified figure instead of the current figure.
rotate3d(axes_handle,...) enables rotation only in the specified axes.
h = rotate3d(figure_handle) returns a rotate3d mode object for figure figure_handle for you to customize the mode's behavior.
You access the following properties of rotate mode objects via get and modify some of them using set:
FigureHandle <handle>
The associated figure handle. This read-only property cannot be set.
Enable 'on'|'off'
Specifies whether this figure mode is currently enabled on the figure.
RotateStyle 'orbit'|'box'
Sets the method of rotation. 'orbit' rotates the entire axes; 'box' rotates a plot-box outline of the axes.
ButtonDownFilter <function_handle>
The application can inhibit the rotate operation under circumstances the programmer defines, depending on what the callback returns. The input function handle should reference a function with two implicit arguments (similar to handle callbacks):
function [res] = myfunction(obj,event_obj)
% OBJ handle to the object that has been clicked on.
% EVENT_OBJ handle to event object (empty in this release).
% RES a logical flag to determine whether the rotate
operation should take place or the
'ButtonDownFcn' property of the object should
take precedence.
ActionPreCallback <function_handle>
Set this callback to listen to when a rotate operation will start. The input function handle should reference a function with two implicit arguments (similar to handle callbacks):
function myfunction(obj,event_obj) % obj handle to the figure that has been clicked on. % event_obj handle to event object.
The event object has the following read-only property:
Axes | The handle of the axes that is being rotated. |
ActionPostCallback <function_handle>
Set this callback to listen to when a rotate operation has finished. The input function handle should reference a function with two implicit arguments (similar to handle callbacks):
function myfunction(obj,event_obj)
% obj handle to the figure that has been clicked on.
% event_obj handle to event object. The object has the same
properties as the EVENT_OBJ of the
'ActionPreCallback' callback.
flags = isAllowAxesRotate(h,axes)
Calling the function isAllowAxesRotate on the rotate3d object, h, with a vector of axes handles, axes, as input will return a logical array of the same dimension as the axes handle vector which indicate whether a rotate operation is permitted on the axes objects.
setAllowAxesRotate(h,axes,flag)
Calling the function setAllowAxesRotate on the rotate3d object, h, with a vector of axes handles, axes, and a logical scalar, flag, will either allow or disallow a rotate operation on the axes objects.
Simple 3-D rotation
surf(peaks); rotate3d on % rotate the plot using the mouse pointer.
Rotate the plot using the "Plot Box" rotate style:
surf(peaks); h = rotate3d; set(h,'RotateStyle','box','Enable','on'); % Rotate the plot.
Create two axes as subplots and then prevent one from rotating:
ax1 = subplot(1,2,1); surf(peaks); h = rotate3d; ax2 = subplot(1,2,2); surf(membrane); setAllowAxesRotate(h,ax2,false); % rotate the plots.
Create a buttonDown callback for rotate mode objects to trigger. Copy the following code to a new M-file, execute it, and observe rotation behavior:
function demo
% Allow a line to have its own 'ButtonDownFcn' callback.
hLine = plot(rand(1,10));
set(hLine,'ButtonDownFcn','disp(''This executes'')');
set(hLine,'Tag','DoNotIgnore');
h = rotate3d;
set(h,'ButtonDownFilter',@mycallback);
set(h,'Enable','on');
% mouse-click on the line
%
function [flag] = mycallback(obj,event_obj)
% If the tag of the object is 'DoNotIgnore', then return true.
objTag = get(obj,'Tag');
if strcmpi(objTag,'DoNotIgnore')
flag = true;
else
flag = false;
end
Create callbacks for pre- and post-buttonDown events for rotate3D mode objects to trigger. Copy the following code to a new M-file, execute it, and observe rotation behavior:
function demo
% Listen to rotate events
surf(peaks);
h = rotate3d;
set(h,'ActionPreCallback',@myprecallback);
set(h,'ActionPostCallback',@mypostcallback);
set(h,'Enable','on');
%
function myprecallback(obj,evd)
disp('A rotation is about to occur.');
%
function mypostcallback(obj,evd)
newView = round(get(evd.Axes,'View'));
msgbox(sprintf('The new view is [%d %d].',newView));
When enabled, rotate3d provides continuous rotation of axes and the objects it contains through mouse movement. A numeric readout appears in the lower left corner of the figure during rotation, showing the current azimuth and elevation of the axes. Releasing the mouse button removes the animated box and the readout.
You can also enable 3-D rotation from the figure Tools menu or the figure toolbar.
You can create a rotate3D mode object once and use it to customize the behavior of different axes, as example 3 illustrates. You can also change its callback functions on the fly.
When you assign different 3-D rotation behaviors to different subplot axes via a mode object and then link them using the linkaxes function, the behavior of the axes you manipulate with the mouse will carry over to the linked axes, regardless of the behavior you previously set for the other axes.
camorbit, pan, rotate, view, zoom
Object Manipulation for related functions
![]() | rotate | round | ![]() |
| © 1984-2008- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |