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' вращает схему поля графика осей.

  • UseLegacyExplorationModes 'off' (значение по умолчанию) | логическое значение включения - выключения – режим Legacy в виде 'on' или 'off', или как числовой или логический 1 TRUE) или 0 ложь). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState.

    Установка этого свойства к 'on' изменяет поведение режимов взаимодействия в фигурах пользовательского интерфейса, таким образом, они совпадают с поведением режимов в традиционных фигурах. Для получения дополнительной информации смотрите enableLegacyExplorationModes. Если это свойство установлено в 'on', это не может быть возвращено к 'off'. Это свойство только применяется к объектам rotate3d за фигуры, созданные с помощью uifigure функционируйте или в MATLAB® Online™.

Обратные вызовы режима 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 функция фиксирует соотношение сторон и изменяет CameraTargetCameraPosition и CameraUpVector свойства осей. Смотрите Свойства осей графика для получения дополнительной информации.

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

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

Примечание

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

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

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

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

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