rotate3d

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

Синтаксис

rotate3d на
rotate3d прочь
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
    

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

    Оси

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

  • 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

Была ли эта тема полезной?