Вращайте 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 операций режима.
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 или панель инструментов фигуры.
Можно создать объект режима rotate3d
однажды и использовать его, чтобы настроить поведение различных осей, когда пример 3 иллюстрирует. Можно также изменить его функции обратного вызова на лету.
Не изменяйте коллбэки фигуры в интерактивном режиме. В то время как режим активен (при панорамировании, масштабируя, и т.д.), вы получите предупреждение, при попытке изменить какой-либо из коллбэков фигуры, и операция не успешно выполнится. Одним исключением к этому правилу является фигура коллбэк WindowButtonMotionFcn
, который может быть изменен из режима. Поэтому, если вы создаете пользовательский интерфейс, который обновляет коллбэки фигуры, пользовательский интерфейс должен некоторые отслеживать, которых интерактивный режим активен, если таковые имеются, прежде, чем попытаться сделать это.
Когда вы присвоите различные 3-D поведения вращения различным осям subplot
через объект режима и затем соединяете их использующий функцию linkaxes
, поведение осей, которыми вы управляете с мышью, перенесет на соединенные оси, независимо от поведения, которое вы ранее устанавливаете для других осей.
Используйте инструмент Rotate3D на панели инструментов, чтобы включить и отключить rotate3D режим на графике или выбрать Rotate 3D из меню Tools фигуры.