Поверните 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 mode для рисунка figure_handle, чтобы настроить поведение режима.
Вы получаете доступ к следующим свойствам объектов режима поворота.
FigureHandle <handle>
- Связанный указатель на рисунок, свойство, доступное только для чтения, которое невозможно задать
Enable
'on'|'off'
- Определяет, включен ли этот режим фигуры в данный момент на рисунке
RotateStyle
'orbit'|'box'
- Устанавливает метод вращения
'orbit'
вращает все оси; 'box'
поворачивает график контура осей.
UseLegacyExplorationModes
'off'
(по умолчанию) | логическое значение on/off - Устаревший режим, заданный как 'on'
или 'off'
, или как числовое или логическое 1
(true
) или 0
(false
). Значение 'on'
эквивалентно true
, и 'off'
эквивалентно false
. Таким образом, можно использовать значение этого свойства как логическое значение. Значение сохранено в виде логического значения on/off типа matlab.lang.OnOffSwitchState
.
Установка значения свойства 'on'
изменяет поведение режимов взаимодействия в фигурах пользовательского интерфейса так, чтобы они совпадали с поведением режимов в традиционных рисунках. Для получения дополнительной информации см. enableLegacyExplorationModes
. Если для этого свойства задано значение 'on'
, его нельзя изменить назад на 'off'
. Это свойство применяется только к вращению 3d объектов для рисунков, созданных с помощью uifigure
функция или в MATLAB® Online™.
Можно запрограммировать следующие коллбэки для операций rotate3d mode.
ButtonDownFilter <function_handle>
- Функция для перехвата ButtonDown
события
Приложение может запретить операцию вращения при обстоятельствах, заданных программистом, в зависимости от того, что возвращает коллбэк. Вход указателя на функцию должна ссылаться на функцию с двумя неявными аргументами (подобными handle коллбэков):
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;
Поверните график с помощью стиля поворота «Plot Box»:
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
Создайте обратный коллбэк buttonDown для запуска объектов режима поворота. Скопируйте следующий код в новый файл, выполните его и наблюдайте за поведением вращения:
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
Создайте коллбэки для событий pre- и post-buttonDown для инициируемых объектов rotate3D mode. Скопируйте следующий код в новый файл, выполните его и наблюдайте за поведением вращения:
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 поворот из меню рисунка или на панели инструментов рисунка.
Вы можете создать rotate3d
mode object один раз и используйте его, чтобы настроить поведение различных осей, как иллюстрирует пример 3. Вы также можете изменять его функции обратного вызова на лету.
Примечание
Не изменяйте коллбэки рисунка в интерактивном режиме. В то время как режим активен (при панорамировании, масштабировании и т.д.), вы получите предупреждение, если попытаетесь изменить любой из коллбэков рисунка, и операция не будет успешной. Единственным исключением из этого правила является рисунок WindowButtonMotionFcn
коллбэк, который может быть изменен из режима. Поэтому, если вы создаете пользовательский интерфейс, который обновляет коллбэки рисунка, пользовательский интерфейс должен отслеживать, какой интерактивный режим активен, если он есть, прежде чем пытаться сделать это.
Когда вы присваиваете разное поведение вращения 3-D другому subplot
оси через объект mode, а затем связать их с помощью linkaxes
функция, поведение осей, которыми вы манипулируете с помощью мыши, переносится на связанные оси, независимо от поведения, которое вы ранее задали для других осей.
Используйте инструмент Rotate3D на панели инструментов, чтобы включить и отключить rotate3D режим на графике, или выберите Rotate 3D из Tools меню рисунка.