主要内容

rotate3d

使用鼠标旋转3-D视图

语法

rotate3d On.
rotate3d掉
rotate3d
rotate3d (figure_handle…)
rotate3d(axes_handle,...)
h = rotate3d(图_Handle)

描述

rotate3d On.打开旋转模式,并在当前图形的所有轴上启用旋转。

rotate3d掉关闭旋转模式并禁用当前图形中的交互轴旋转。从R2018b开始,无论旋转模式如何,一些旋转交互默认是启用的。如果您想禁用这些默认交互,则使用disableDefaultInteractivity函数。

rotate3d切换当前图形中的交互轴旋转。

rotate3d (figure_handle…)启用指定图形中的旋转,而不是当前图形中的旋转。

rotate3d(axes_handle,...)仅在指定的轴上打开旋转模式。

h = rotate3d(图_Handle)返回一个rotate3d模式对象为图figure_handle定制模式的行为。

使用旋转模式对象

您访问旋转模式对象的以下属性。

  • FigureHandle <处理>- 关联的数字句柄,无法设置的只读属性

  • 启用“上”|“了”- 指定是否在图中启用了此图形模式

  • rotateTyle.'轨道'|'框'- 设置旋转方法

    “轨道”旋转整个轴;“盒子”旋转坐标轴的绘图盒轮廓。

  • UseLegacyExplorationModes'离开'(默认)|ON / OFF逻辑值 - 遗留模式,指定为“上”或者'离开',或作为数字或逻辑1真的) 或者0)。价值“上”相当于真的, 和'离开'相当于.因此,您可以使用此属性的值作为逻辑值。该值存储为类型的开/关逻辑值matlab.lang.OnoffSwitchState.

    将此属性设置为“上”改变UI数字中交互模式的行为,因此它们与传统数据中模式的行为匹配。有关更多信息,请参阅enableLegacyExploriationModes..此属性设置为“上”,它不能变回'离开'.此属性仅适用于rotate3d对象,用于使用使用的数字uifigure函数或马铃薯®在线™

Rotate3D模式回调

你可以为rotate3d模式操作编写以下回调函数。

  • ButtonDownFilter < function_handle >- 拦截功能屁股事件

    应用程序可以在程序员定义的情况下禁止旋转操作,这取决于回调返回的内容。输入函数句柄应该引用一个带有两个隐式参数的函数(类似于handle回调函数):

    功能(res) = myfunction (obj event_obj)被单击对象的% obj句柄% event_obj事件数据对象句柄(本版本为空)%res [输出]逻辑标志,以确定是否旋转%操作应该发生或“buttondownfcn”物体的%属性应优先
  • ActionPreCallback < function_handle >- 在旋转之前执行的函数

    将此回调设置为何时将启动旋转操作时收听。输入函数句柄应该引用一个带有两个隐式参数的函数(类似于图形对象回调函数):

    功能myfunction(obj,event_obj)%obj句柄到已单独的图形% event_obj对象,包含事件数据的结构

    事件数据包含以下字段:

    被平移的轴的柄

  • ActionPostCallback - 旋转后要执行的功能

    将这个回调设置为在旋转操作完成时监听。输入函数句柄应该引用一个带有两个隐式参数的函数(类似于图形对象回调函数):

    功能myfunction(obj,event_obj)%obj句柄到已单独的图形%event_obj包含事件数据结构的对象(与% ActionPreCallback回调的事件数据)

Rotate3D模式实用程序功能

以下功能在PAN模式查询中并设置其特定属性。

  • 旗帜= isAllowAxesRotate (h,轴)—命令功能查询转轴权限

    调用该功能isAllowAxesRotate在rotate3d对象上,h,带有轴柄向量,,因为输入将返回与轴柄向量相同的尺寸的逻辑阵列,其指示是否允许在轴对象上允许旋转操作。

  • setAllowAxesRotate (h,轴,标志)—设置平移轴的权限

    调用该功能setAllowAxesRotate在rotate3d对象上,h,带有轴柄向量,,和逻辑标量,旗帜,将允许或不允许对轴对象进行旋转操作。

例子

例1

使用鼠标旋转绘图:

冲浪(峰);rotate3d

例2.

使用“plot Box”旋转样式旋转情节:

冲浪(峰);h = rotate3d;h.rotatestyle =“盒子”;h.Enable =“上”

例3.

创建两个坐标轴作为子图,然后防止其中一个旋转:

AX1 =子图(1,2,1);冲浪(峰);h = rotate3d;h.Enable =“上”;AX2 =子图(1,2,2);冲浪(膜);setallowaxeSrotate(h,ax2,false);%禁止第二个地块的旋转

例4.

创建一个buttonDown回调来触发旋转模式对象。复制以下代码到一个新文件,执行它,并观察旋转行为:

功能demo_mbd%允许一条线有自己的'buttondownfcn'回调hline = plot(rand(1,10),'buttondownfcn'“disp(“这执行”)”);hinal.tag =.“DoNotIgnore”;h = rotate3d;h.ButtonDownFilter = @mycallback;h.Enable =“上”%鼠标单击该行功能[标志] = mycallback(obj,event_obj)%如果对象的标记是'DoNotIgnore',则返回trueobjTag = obj.Tag;如果strcmpi (objTag“DoNotIgnore”)标志=真;别的国旗= false;结束

例5.

创建用于触发rotate3D模式对象的按钮下降前和按钮下降后事件的回调。复制以下代码到一个新文件,执行它,并观察旋转行为:

功能demo_mbd2%听取旋转事件冲浪(峰);h = rotate3d;h.ActionPreCallback = @myprecallback;h.ActionPostCallback = @mypostcallback;h.Enable =“上”功能myprecallback (obj, evd) disp (“旋转即将发生。”);功能mypostcallback(obj,evd)newview = round(evd.axes.view);msgbox(Sprintf(新的观点是[%d %d]。newView));

提示

启用后,rotate3d提供连续旋转轴和通过鼠标运动所包含的物体。在旋转期间,数字读数出现在图的左下角,显示当前方位角和轴的升高。释放鼠标按钮删除动画盒和读数。这与...不同camorbit函数的作用rotate3d工具修改视图坐标轴的性质camorbit功能修复了宽高比并修改了摄像机冰孔系CameraupVector.轴的特性。看轴属性想要查询更多的信息。

您还可以启用从图形的三维旋转工具菜单或图形工具栏。

您可以创建rotate3d模式对象一次并使用它来自定义不同轴的行为,如实施例3所示。您还可以在飞行中更改其回调函数。

请注意

不要在交互模式中更改图形回调。虽然某种模式是活动的(当PANNING,缩放等)时,如果您尝试更改任何图形的回调并且操作不会成功,则会收到警告。这个规则的一个例外是数字WindowButtonMotionFcn回调,可以从模式中更改。因此,如果您正在创建更新图形的回调的UI,则UI应在尝试执行此操作之前,在某些情况下,UI应遵循哪个交互模式是活动的,如果有的话。

当你将不同的三维旋转行为分配给不同的子图通过模式对象来连接坐标轴,然后使用纳瓦斯功能,用鼠标操纵的轴的行为将携带到链接轴上,而不管先前为其他轴设置的行为如何。

选择

使用工具栏上的Rotate3D工具在绘图上启用和禁用Rotate3D模式,或选择旋转3D.从图的工具菜单。

在R2006A之前介绍