rotate3d

Вращайте 3-D представление с помощью мыши

Синтаксис

rotate3d on
rotate3d off
rotate3d
rotate3d(figure_handle,...)
rotate3d(axes_handle,...)
h = rotate3d(figure_handle)

Описание

rotate3d on включает вращают режим, и включает вращение на всех осях в текущей фигуре.

rotate3d off выключает вращают режим, и отключает интерактивный поворот осей в текущей фигуре. При запуске в R2018b некоторые вращаются, взаимодействия включены по умолчанию, независимо от вращать режима. Если вы хотите отключить эти взаимодействия по умолчанию, то используйте функцию disableDefaultInteractivity.

rotate3d переключается интерактивный поворот осей в текущей фигуре.

rotate3d(figure_handle,...) включает вращение в заданной фигуре вместо текущей фигуры.

rotate3d(axes_handle,...) включает вращают режим только в заданных осях.

h = rotate3d(figure_handle) возвращает rotate3d объект режима для фигуры figure_handle для вас, чтобы настроить поведение режима.

Используя вращают объекты режима

Вы получаете доступ к следующим свойствам, вращают объекты режима.

  • FigureHandle <handle> — Связанный указатель фигуры, свойство только для чтения, которое не может быть установлено

  • Enable 'on'|'off' — Задает, включен ли этот режим фигуры в настоящее время на фигуре

  • RotateStyle 'orbit'|'box' — Устанавливает метод вращения

    'orbit' вращает целые оси; 'box' вращает схему поля графика осей.

Обратные вызовы режима Rotate3D

Можно программировать следующие коллбэки для rotate3d операций режима.

  • ButtonDownFilter <function_handle> — Функционируйте, чтобы прервать события ButtonDown

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

    function [res] = myfunction(obj,event_obj)
    % obj          handle to the object that has been clicked on
    % event_obj    handle to event data object (empty in this release)
    % res [output] logical flag to determine whether the rotate
    %              operation should take place or the 'ButtonDownFcn'
    %              property of the object should take precedence
    
  • ActionPreCallback <function_handle> — Функция, чтобы выполниться перед вращением

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

    function myfunction(obj,event_obj)
    % obj         handle to the figure that has been clicked on
    % event_obj   object containing struct of event data
    

    Данные о событиях имеют следующее поле:

    Axes

    Указатель осей, который панорамируется

  • ActionPostCallback <function_handle> — Функция, чтобы выполниться после вращения

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

    function myfunction(obj,event_obj)
    % obj         handle to the figure that has been clicked on
    % event_obj   object containing struct of event data (same as the
    %             event data of the 'ActionPreCallback' callback)
    
    

Служебные функции режима Rotate3D

Следующие функции в запросе режима панорамирования и наборе, уверенном в его свойствах.

  • flags = isAllowAxesRotate(h,axes) — Разрешение запроса функции вращать оси

    Вызывая функциональный isAllowAxesRotate на объекте rotate3d, h, с вектором указателей осей, axes, когда вход возвратит логический массив той же размерности как оси, обрабатывает вектор, которые указывают, разрешена ли вращать операция на объектах осей.

  • setAllowAxesRotate(h,axes,flag) — Функционируйте, чтобы установить разрешение панорамировать оси

    Вызывая функциональный setAllowAxesRotate на объекте rotate3d, h, с вектором указателей осей, axes, и логического скаляра, flag, или позволит или запретит вращать операцию на объектах осей.

Примеры

Пример 1

Вращайте график с помощью мыши:

surf(peaks);
rotate3d on;

Пример 2

Вращайтесь график с помощью "Поля Графика" вращают стиль:

surf(peaks);
h = rotate3d;
h.RotateStyle = 'box';
h.Enable = 'on';

Пример 3

Создайте две оси как подграфики и затем препятствуйте тому один вращаться:

ax1 = subplot(1,2,1);
surf(peaks);
h = rotate3d;
h.Enable = 'on';
ax2 = subplot(1,2,2);
surf(membrane);
setAllowAxesRotate(h,ax2,false); % disable rotating for second plot

Пример 4

Создайте консервативный коллбэк для, вращают объекты режима инициировать. Скопируйте следующий код в новый файл, выполните его и наблюдайте поведение вращения:

function demo_mbd
% Allow a line to have its own 'ButtonDownFcn' callback
hLine = plot(rand(1,10),'ButtonDownFcn','disp(''This executes'')');
hLine.Tag = 'DoNotIgnore';
h = rotate3d;
h.ButtonDownFilter = @mycallback;
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 = obj.Tag;
if strcmpi(objTag,'DoNotIgnore')
   flag = true;
else
   flag = false;
end

Пример 5

Создайте коллбэки для пред - и постконсервативные события для rotate3D режима возражает против триггера. Скопируйте следующий код в новый файл, выполните его и наблюдайте поведение вращения:

function demo_mbd2
% Listen to rotate events
surf(peaks);
h = rotate3d;
h.ActionPreCallback = @myprecallback;
h.ActionPostCallback = @mypostcallback;
h.Enable = 'on';

function myprecallback(obj,evd)
disp('A rotation is about to occur.');

function mypostcallback(obj,evd)
newView = round(evd.Axes.View);
msgbox(sprintf('The new view is [%d %d].',newView));

Советы

Когда включено, rotate3d обеспечивает непрерывный поворот осей и объекты, которые это содержит посредством движения мыши. Числовое считывание появляется в левом нижнем углу фигуры во время вращения, показывая текущий азимут и повышение осей. Отпускание кнопки мыши удаляет анимированное поле и считывание. Это отличается от функции camorbit в этом, в то время как инструмент rotate3d изменяет свойство View осей, функция camorbit фиксирует соотношение сторон и изменяет CameraTarget, свойства CameraPosition и CameraUpVector осей. Смотрите Свойства осей графика для получения дополнительной информации.

Можно также включить 3-D вращение от фигуры меню Tools или панель инструментов фигуры.

Можно создать объект режима rotate3d однажды и использовать его, чтобы настроить поведение различных осей, когда пример 3 иллюстрирует. Можно также изменить его функции обратного вызова на лету.

Примечание

Не изменяйте коллбэки фигуры в интерактивном режиме. В то время как режим активен (при панорамировании, масштабируя, и т.д.), вы получите предупреждение, при попытке изменить какой-либо из коллбэков фигуры, и операция не успешно выполнится. Одним исключением к этому правилу является фигура коллбэк WindowButtonMotionFcn, который может быть изменен из режима. Поэтому, если вы создаете пользовательский интерфейс, который обновляет коллбэки фигуры, пользовательский интерфейс должен некоторые отслеживать, которых интерактивный режим активен, если таковые имеются, прежде, чем попытаться сделать это.

Когда вы присвоите различные 3-D поведения вращения различным осям subplot через объект режима и затем соединяете их использующий функцию linkaxes, поведение осей, которыми вы управляете с мышью, перенесет на соединенные оси, независимо от поведения, которое вы ранее устанавливаете для других осей.

Альтернативы

Используйте инструмент Rotate3D на панели инструментов, чтобы включить и отключить rotate3D режим на графике или выбрать Rotate 3D из меню Tools фигуры.

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