文档

rotate3d

使用鼠标旋转三维视图

语法

rotate3d上
rotate3d掉
rotate3d
rotate3d (figure_handle…)
rotate3d (axes_handle…)
h = rotate3d (figure_handle)

描述

rotate3d上使mouse-base转动轴在当前图。

rotate3d掉禁用互动在当前图轴旋转。

rotate3d切换互动在当前图轴旋转。

rotate3d (figure_handle…)使旋转内指定的图而不是当前的图。

rotate3d (axes_handle…)使只在指定的轴旋转。

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

使用旋转模式对象

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

  • FigureHandle <处理>——相关的图处理,不能设置只读属性

  • 启用“上”|“了”——指定是否启用此图模式目前在图上

  • RotateStyle“轨道”|“盒子”——设置旋转的方法

    “轨道”旋转整个轴;“盒子”旋转一个plot-box轴的轮廓。

Rotate3D模式回调

你可以计划以下rotate3d模式操作的回调。

  • ButtonDownFilter < function_handle >——函数拦截ButtonDown事件

    应用程序可以抑制旋转操作在程序员定义的情况下,这取决于回调返回。输入函数处理应该引用一个函数有两个隐式参数(类似于处理回调函数):

    函数(res) = myfunction (obj event_obj)% obj被点击的对象的句柄% event_obj处理事件数据对象在这个版本(空)% res[输出]逻辑标志来确定旋转%操作应该发生或“ButtonDownFcn”%属性的对象应该优先考虑
  • ActionPreCallback < function_handle >——函数执行前旋转

    设置这个回调听当旋转操作将开始。输入函数处理应该引用一个函数有两个隐式参数(类似于图形对象回调):

    函数myfunction (obj event_obj)% obj处理图,点击% event_obj对象包含事件数据的结构

    事件数据有以下字段:

    柄的斧头被批评

  • ActionPostCallback < function_handle >——函数执行后旋转

    设置这个回调听当旋转操作完成。输入函数处理应该引用一个函数有两个隐式参数(类似于图形对象回调):

    函数myfunction (obj event_obj)% obj处理图,点击包含事件数据的结构体(% event_obj对象一样%的ActionPreCallback回调的事件数据)

Rotate3D模式效用函数

以下功能在锅模式查询和设置特定的属性。

  • 旗帜= isAllowAxesRotate (h,轴)——函数查询允许轴旋转

    调用的函数isAllowAxesRotaterotate3d对象上,h轴矢量的处理,作为输入,将返回一个逻辑数组相同的维向量表示的轴手柄轴上是否允许一个旋转操作对象。

  • setAllowAxesRotate (h,轴,标志)——函数设置盘轴的许可

    调用的函数setAllowAxesRotaterotate3d对象上,h轴矢量的处理,一个逻辑标量,国旗,要么允许或不允许轴上的旋转操作对象。

例子

示例1

使用鼠标旋转情节:

冲浪(峰);rotate3d;

示例2

旋转使用“阴谋盒子”的情节旋转风格:

冲浪(峰);h = rotate3d;h。RotateStyle =“盒子”;h。使=“上”;

示例3

创建两个轴作为次要情节,然后阻止一个旋转:

ax₁=情节(1、2、1);冲浪(峰);h = rotate3d;h。使=“上”;ax2 =情节(1、2、2);冲浪(膜);setAllowAxesRotate (h, ax2假);%禁用旋转第二阴谋

示例4

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

函数demo_mbd%允许一行有自己的“ButtonDownFcn”回调线=情节(兰德(10),“ButtonDownFcn”,“disp(“这执行”)”);线。标签=“DoNotIgnore”;h = rotate3d;h。ButtonDownFilter = @mycallback;h。使=“上”;%的点鼠标函数[标记]= mycallback (obj event_obj)%如果对象的标签是“DoNotIgnore”,然后返回trueobjTag = obj.Tag;如果strcmpi (objTag“DoNotIgnore”)标志= true;其他的国旗= false;结束

示例5

为预处理和post-buttonDown创建回调事件触发rotate3D模式对象。将下面的代码复制到一个新文件,执行它,并观察旋转行为:

函数demo_mbd2%听旋转事件冲浪(峰);h = rotate3d;h。ActionPreCallback = @myprecallback;h。ActionPostCallback = @mypostcallback;h。使=“上”;函数myprecallback (obj, evd) disp (“一个旋转即将发生。”);函数mypostcallback (obj, evd) newView =圆(evd.Axes.View);对话框(sprintf (的新视图(% d % d)。newView));

提示

当启用时,rotate3d提供连续旋转的轴,通过鼠标移动它所包含的对象。数字读出出现在图中左下角的旋转,显示当前方位和仰角的轴。释放鼠标按钮删除动画框和读出。这不同于camorbit而函数rotate3d工具修改视图属性的轴,camorbit功能修复长宽比和修改CameraTarget,CameraPositionCameraUpVector轴的属性。看到轴属性为更多的信息。

您还可以使3 d图的旋转工具菜单或工具栏。

您可以创建一个rotate3d模式对象,用它来定制不同的轴的行为,如例3所示。你也可以改变它的回调函数。

请注意

不改变图回调在一个交互模式。活跃模式时(当平移,缩放等),你会收到一个警告如果你试图改变图的任何回调,操作将不会成功。一个例外是图WindowButtonMotionFcn回调,这可以从内部改变模式。因此,如果你正在创建一个UI更新图的回调,UI交互模式的一些跟踪应该是活跃的,如果有的话,在尝试这样做。

当你分配不同的三维旋转行为不同次要情节轴通过模式对象,然后将它们链接使用linkaxes功能,你用鼠标操纵轴的行为将在连接轴,不管你之前设置其他轴的行为。

选择

使用Rotate3D工具图工具栏上的启用和禁用rotate3D模式情节,或选择三维旋转从图的工具菜单。有关详细信息,请参见在三维旋转

之前介绍过的R2006a

这个主题有帮助吗?