rotate3d
使用鼠标旋转3d视图
语法
rotate3d上
rotate3d掉
rotate3d
rotate3d (figure_handle…)
rotate3d (axes_handle…)
H = rotate3d(figure_handle)
描述
rotate3d上
在当前图中的所有轴上启用基于鼠标的旋转。
rotate3d掉
禁用当前图中的交互轴旋转。
rotate3d
切换当前图中的交互轴旋转。
rotate3d (figure_handle…)
启用在指定图形而不是当前图形内旋转。
rotate3d (axes_handle…)
只允许在指定的轴上旋转。
H = rotate3d(figure_handle)
返回一个旋转的3d模式对象图figure_handle用于自定义模式的行为。
使用旋转模式对象
您可以访问以下旋转模式对象的属性。
FigureHandle <处理>
-关联的图句柄,不能设置的只读属性启用
“上”|“了”
-指定当前是否在图上启用此图模式RotateStyle
“轨道”|“盒子”
—设置旋转的方法“轨道”
旋转整个轴;“盒子”
旋转坐标轴的绘图框轮廓。
旋转3d模式回调
您可以为rotate3d模式操作编写以下回调程序。
ButtonDownFilter < function_handle >
-拦截功能ButtonDown
事件应用程序可以在程序员定义的情况下禁止旋转操作,这取决于回调返回的内容。输入函数句柄应该引用一个带有两个隐式参数的函数(类似于句柄回调):
函数[res] = myfunction(obj,event_obj)% obj句柄指向已被单击的对象事件数据对象的% event_obj句柄(此版本为空)% res [output]逻辑标志来确定是否旋转%操作或'ButtonDownFcn'对象的%属性应该优先
ActionPreCallback < function_handle >
-旋转前执行的函数将此回调设置为监听旋转操作何时开始。输入函数句柄应该引用一个带有两个隐式参数的函数(类似于图形对象回调函数):
函数myfunction (obj event_obj)% obj句柄到已单击的图形包含事件数据结构的event_obj对象
事件数据有以下字段:
轴
被平移的轴柄
ActionPostCallback < function_handle >
-旋转后执行的函数将此回调设置为在旋转操作完成时监听。输入函数句柄应该引用一个带有两个隐式参数的函数(类似于图形对象回调函数):
函数myfunction (obj event_obj)% obj句柄到已单击的图形包含事件数据结构的% event_obj对象'ActionPreCallback'回调的%事件数据)
旋转3d模式实用函数
以下函数在pan模式下查询和设置其某些属性。
flags = isAllowAxesRotate(h,axes)
—查询轴的旋转权限调用函数
isAllowAxesRotate
在rotate3d对象上,h
,有一个轴句柄的向量,轴
,作为输入将返回一个与坐标轴句柄向量相同维度的逻辑数组,坐标轴句柄向量指示是否允许对坐标轴对象进行旋转操作。setAllowAxesRotate (h,轴,标志)
-设置对平移轴的权限调用函数
setAllowAxesRotate
在rotate3d对象上,h
,有一个轴句柄的向量,轴
,一个逻辑标量,国旗
,将允许或禁止对坐标轴对象进行旋转操作。
例子
示例1
使用鼠标旋转绘图:
冲浪(峰);rotate3d在;
示例2
使用“plot Box”旋转样式旋转剧情:
冲浪(峰);H = rotate3d;h.RotateStyle =“盒子”;h.Enable =“上”;
示例3
创建两个轴作为子图,然后阻止其中一个旋转:
Ax1 = subplot(1,2,1);冲浪(峰);H = rotate3d;h.Enable =“上”;Ax2 = subplot(1,2,2);冲浪(膜);setAllowAxesRotate (h, ax2假);禁用第二个图的旋转。
示例4
为要触发的旋转模式对象创建一个buttonDown回调。复制以下代码到一个新文件,执行它,并观察旋转行为:
函数demo_mbd允许一行有自己的'ButtonDownFcn'回调hLine = plot(rand(1,10),“ButtonDownFcn”,“disp(“这执行”)”);线。标签=“DoNotIgnore”;H = rotate3d;h.ButtonDownFilter = @mycallback;h.Enable =“上”;%鼠标点击线上函数[flag] = mycallback(obj,event_obj)如果对象的标签是'DoNotIgnore',则返回trueobjTag = obj.Tag;如果strcmpi (objTag“DoNotIgnore”) flag = true;其他的Flag = false;结束
示例5
为要触发的旋转3d模式对象创建前置和后buttondown事件的回调。复制以下代码到一个新文件,执行它,并观察旋转行为:
函数demo_mbd2%收听旋转事件冲浪(峰);H = rotate3d;h.ActionPreCallback = @myprecallback;h.ActionPostCallback = @mypostcallback;h.Enable =“上”;函数myprecallback (obj, evd) disp (“旋转即将发生。”);函数mypostcallback(obj,evd) newView = round(evd. ax . view);对话框(sprintf (新的观点是[%d %d]。newView));
提示
当启用时,rotate3d
通过鼠标移动提供轴和它包含的对象的连续旋转。在旋转过程中,数字读数将出现在图的左下角,显示轴的当前方位角和仰角。松开鼠标按钮将移除动画框和读数。这不同于camorbit
函数在rotate3d
工具修改视图
坐标轴的性质camorbit
函数固定纵横比并修改CameraTarget
,CameraPosition
而且CameraUpVector
坐标轴的性质。看到轴属性更多信息。
还可以从图中启用3-D旋转工具菜单或图工具栏。
您可以创建rotate3d
Mode对象一次,并使用它自定义不同轴的行为,如示例3所示。您还可以动态更改它的回调函数。
注意:不要在交互模式中更改图回调。当模式处于活动状态时(当平移、缩放等),如果您试图更改任何图形的回调,并且操作不成功,则会收到一个警告。这个规则的一个例外是图 |
当你把不同的三维旋转行为分配给不同的次要情节
坐标轴通过模式对象,然后使用linkaxes
函数中,您用鼠标操作的轴的行为将延续到链接的轴,而不管您先前为其他轴设置的行为如何。
选择
使用Rotate3D工具在图形工具栏上启用和禁用旋转3d模式,或选择三维旋转从图中工具菜单。详情请参见3d旋转.