Вращайте 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 операций режима.
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)
Следующие функции в запросе режима панорамирования и наборе, уверенном в его свойствах.
flags = isAllowAxesRotate(h,axes)
— Разрешение запроса функции вращать оси
Вызов функционального isAllowAxesRotate
на объекте rotate3d, h
, с вектором из указателей осей, axes
, когда вход возвратит логический массив той же размерности, как оси обрабатывают вектор, которые указывают, разрешена ли вращать операция на объектах осей.
setAllowAxesRotate(h,axes,flag)
— Функция, чтобы установить разрешение панорамировать оси
Вызов функционального setAllowAxesRotate
на объекте rotate3d, h
, с вектором из указателей осей, axes
, и логический скаляр, flag
, или позволит или запретит вращать операцию на объектах осей.
Вращайте график с помощью мыши:
surf(peaks);
rotate3d on;
Вращайтесь график с помощью "Поля Графика" вращают стиль:
surf(peaks); h = rotate3d; h.RotateStyle = 'box'; h.Enable = 'on';
Создайте две оси как подграфики и затем препятствуйте тому один вращаться:
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
Создайте консервативный коллбэк для, вращают объекты режима инициировать. Скопируйте следующий код в новый файл, выполните его и наблюдайте поведение вращения:
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
Создайте коллбэки для пред - и постконсервативные события для 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 или панель инструментов фигуры.
Можно создать a rotate3d
объект режима однажды и использование это, чтобы настроить поведение различных осей, когда пример 3 иллюстрирует. Можно также изменить его функции обратного вызова на лету.
Примечание
Не изменяйте коллбэки фигуры в интерактивном режиме. В то время как режим активен (при панорамировании, масштабируя, и т.д.), вы получите предупреждение, при попытке изменить какой-либо из коллбэков фигуры, и операция не успешно выполнится. Одним исключением к этому правилу является фигура WindowButtonMotionFcn
коллбэк, который может быть изменен из режима. Поэтому, если вы создаете пользовательский интерфейс, который обновляет коллбэки фигуры, пользовательский интерфейс должен некоторые отслеживать, которых интерактивный режим активен, если таковые имеются, прежде, чем попытаться сделать это.
Когда вы присваиваете различные 3-D поведения вращения различному subplot
оси через режим возражают и затем соединяют их использующий linkaxes
функция, поведение осей, которыми вы управляете с мышью, перенесут на соединенные оси, независимо от поведения, которое вы ранее устанавливаете для других осей.
Используйте инструмент Rotate3D на панели инструментов, чтобы включить и отключить rotate3D режим на графике или выбрать Rotate 3D из меню Tools фигуры.