• / 30
  • 下载费用:10 金币  

第五章 交互技术

关 键 词:
第五章 交互 技术第五章交互
资源描述:
第五 章 交互技术 n交互处理是计算机绘图技术中必不可少的 一大内容。交互设备是实现交互技术,完 成交互任务的设备基础,交互技术是用户 用交互设备把信息输入到计算机的不同方 式,交互任务是用户输入到计算机的一个 信息单元。 n对于一个给定的交互任务可以用多种不同 的交互技术来实现,比如一个选择任务可 以通过鼠标器在菜单中选一项,也可以用 键盘输入选择项的名字,还可以用功能键 进行选择。 §5.1输入设备 n输入设备是向图形软件输入图形命令 。图 形输入设备是用户向计算机输入信息的硬 件设备,尽管图形输入设备的种类繁多, 用法各不相同,并且有各自的特点,但是 按逻辑功能划分,可以划分为六种。即: 定位设备、笔画设备、选择设备、字符设 备、定值设备、拾取设备。 n定位设备(LOCATOR DEVICE):指定单点位置坐标( x,y)的设备。 n笔画设备(STROKE DEVICE):指定一组点位置 坐标的设备。 n选择设备(CHOICE DEVICE):选择菜单项的设备。 n字符设备(STRING DEVICE):指定文字输入的设备。 n定值设备(VALUATOR DEVICE):指定标量值的设备。 n拾取设备(PICK DEVICE):选择图形的组成部分的设 备。 在实际应用中,一个物理设备可能用于实现多个 逻辑设备功能,多个逻辑设备如定位和笔画操作也可 在软件系统中使用同一种逻辑设备,然后由软件判断 需要一个坐标位置还是一串坐标位置来区分是定位还 是笔画设备。因此有些软件系统把这两种逻辑设备认 为是一种,因而认为只有五种逻辑输入设备。 n5.1.1定位设备 n定位设备是用来指定用户空间的一个位置 。可以根据以下三种相互独立的特征来对 定位设备分类:绝对或相对,直接或间接 ,离散 或连续。 n绝对定位设备:输入给计算机的是相对于 坐标原点的位置坐标。如数字化仪和触摸 屏。 n相对定位设备:没有绝对坐标原点,输入 给计算机的是相对于前一位置的变化量。 如鼠标、轨迹球和操纵杆。 n直接定位设备:用户可以直接用手指或其 它替代物指点屏幕来进行定位。如触摸屏 。 n间接定位设备:用户通过移动屏幕上的光 标来进行定位。如鼠标、数字化仪和操纵 杆。 n连续定位设备:将手的平滑移动变成光标 的平滑移动。如数字化仪、鼠标和操纵杆 。 n离散定位设备如键盘上的光标控制键。 5.1.2笔画设备 n笔画设备又称描画设备,用于指定一组有序点的 位置。可以看成是对定位设备的连续调用。如鼠 标器、轨迹球、操纵杆的连续移动都可以输入一 系列坐标位置。其中,数字化仪是一种最典型的 笔画设备。 5.1.3选择设备 n选择设备用来在应用程序的多个选项中选定一项 。其输入方式有:直接或间接的在屏幕上进行字 符串名称、手写输入、时间扫描、声音输入等。 其对应的物理设备有触摸屏、数字化仪、光笔、 鼠标、操纵杆、跟踪球、编程功能键、字符串输 入设备、声音识别仪。 5.1.4字符设备 n字符设备又称为字符串设备,用来向应用程序输 入字符串,比如,为某一图形设定名称,或者为 某一图纸输入注解文字等。其输入方式包括:键 盘输入、手写输入、声音输入、菜单输入。 其对 应的物理设备有键盘、数字化仪、光笔、声音识 别仪等。 5.1.5定值设备(Value) n定值设备用来为应用程序输入一个数值(实数) 。其输入方式包括:直接输入数值、通过字符串 取值、上下计数控制命令、通过比例尺输入等。 对应的物理设备包括旋钮、键盘、数字化仪、鼠 标、方向键、编程功能键等。 n5.1.6拾取设备(Pick) n拾取设备用来在处理的模型中选取一个对象,从 而为应用程序的操作处理确定目标。 n一般情况下,可以先用定位设备将光标移到想要 拾取的图形对象的附近(对于非封闭图形)或内 部(对于封闭图形),再按拾取键,这时系统会 根据一定的拾取算法在存储所有图形对象的内部 数据结构中找出被拾取的图形对象,并将它着重 显示出来,用户即可对该对象作进一步的操作, 如复制、删除、修改等。 n最基本的拾取算法有点的拾取、线段的拾取和多 边形拾取。 n其对应的物理设备包括各种定位设备、编程功能 键、字符串输入设备。 §5.2输入控制 n 在交互输入过程中,常用的控制模式是请求、采 样、事件三种。 n在设计一个交互系统时,会使用到我们前面提到 的六种输入设备。应用程序必须指定用于输入数 据的物理设备类型及其逻辑分类,其它参数则取 决于输入数据。在应用程序和输入设备之间,输 入控制的模式是多样的。比如,可以使用程序来 初始化输入设备;或者程序与输入设备同时工作 ;或者由设备初始化输入数据。这三种方式对应 的即是请求、采样、事件三种模式。 n对这三种输入控制模式都可定义相对应的输入命 令,而且图形交互系统允许对每一种逻辑设备执 行相应的输入操作。 5.2.1 请求模式 n当程序运行到请求语句就向输入设备提出输入请求 ;同时停止运行,等待输入设备的输入数据。直到 请求满足之后,程序才继续运行。当程序运行时, 输入设备处于等待状态,等待程序的请求。待到程 序的请求出现,输入设备立即进入工作,直到满足 程序的这一请求为止。然后又重新处于等待状态。 n在请求模式下,程序和输入设备轮流交换工作状态 和等待状态,由程序支配输入设备的启动。此时, 只有用输入方式设置命令(或语句)对相应的设备 设置成需要的输入模式后,该设备才能做相应的输 入处理。 程序启动 输入设备等待输入请求 收到请求指令 输入设备工作 程序等待接收数据 请求指令完成 请求模式的工作过程 5.2.2采样模式 n在采样模式的输入过程中,输入设备和程 序分别同时运行。输入设备不断地产生数 据,并把数据输入到数据缓冲区,从而不 断刷新数据缓冲区的内容。程序在运行时 一旦遇到采样语句,就到数据缓冲区中去 取数据,所取的一定是最后刷新的输入数 据。 数据缓存区数据采样 程序工作 数据生成 输入设备工作 采样模式的工作过程 5.2.3事件模式 n在事件模式的数据输入过程中,程序和输 入设备分别各自运行。输入设备产生的数 据被组织成事件节点,排入事件队列中等 待程序处理。当程序运行到事件处理语句 时,就从事件队列中取出队首节点的事件 予以处理。如果事件队空,则程序等待一 定的时间,以等待事件的发生。 事件处理 程序工作 数据生成 输入设备工作 事件模式的工作过程 事件队列 §5.3交互技术 5.3.1定位技术 n定位技术就是在屏幕指定的位置上插入一个符号 ,或者定义线段的端点。可以使用图形输入板( 数字化仪)、鼠标等输入设备产生光标来实现, 也可用键盘的左、右、上、下箭头键,实现光标 沿垂直或水平方向步进来定位操作,还可以在应 用程序设计中,实现八个方位(上、下、左、右 、左上、左下、右上、右下)及光标块快速移动 的功能。 定位技术 5.3.2约束技术 n约束就是几何约束,借助于计算机控制达 到精确定位。 1.方向约束 n用户定位两个端点,应用程序判断两点所 定义的直线画水平线还是垂直线。当水平 方向约束时,终点不论移动到何处,只有x 坐标有意义,而y坐标与始点相同。这样产 生的直线段为水平直线。 水平约束 垂直约束 2.栅格约束 n在屏幕上按用户的要求,显示一网格(栅格),有时以小 圆点的形式显示网格结点的位置,有时结点位置不显示, 但对输入的不同点都用离它最近的一个网格点的位置坐标 来代替。如定义网格线为 当输入点的坐标为 时,离它最近的网格点的坐标为 就用这个网格点坐标来代替输入点坐标。 输入点被约束在最近的网格点 5.3.3橡皮筋技术 n在交互式绘图过程中,需要动态的显示几何图形 ,可通过定位光标的移动使图形动态变化,这样 用户很容易的根据设计要求现场确定其基本尺寸 ,这如同一根橡皮筋在人手拉动下,可随意变化 一样,称为橡皮筋技术。 n 在我们在使用微软的绘图程序时。当要画一条直 线,先用鼠标确定起始位置,然后鼠标在屏幕上 来回移动时,我们会发现,这条直线就像橡皮筋 一样,随着鼠标在屏幕中的位置,长短和终点都 随之变化。我们在编制自己的程序时,有时也需 实现类似的功能。 n1.橡皮筋直线 n2.橡皮筋矩形 n3.橡皮筋圆 n利用了WINDOWS绘图模式中的“异或”的绘图特 性。即在屏幕上用异或的模式画图形,然后再用 异或的模式,在相同的位置重新画一次此图形, 则就会在屏幕上擦出掉上一次所绘制的内容。 n具体在程序中, 1、当按下鼠标左键时,用异或的绘图模式在屏幕 上画图形。 2、当鼠标移动后,先用异或的绘图模式擦掉上次 绘制的图形。然后在新的位置绘制图形。 3、当鼠标左键被抬起时。在最终的位置用正常的 颜色重新绘制图形。结束。 n编程举例:下面举一个画直线的例子,其他画矩 形和圆弧的实现方法完全相同,可自行编制。 1、用VC6.0生成一个基于单文档的程序。 2、在view类中添加如下变量: CPoint OriginPos; // 绘图的起始点 CPoint TargetPos; // 绘图的目标点 bool m_bDrawing; // 是否在绘图状态 3、用ClassWizard在view类中添加 WM_LBUTTONDOWN WM_LBUTTONUP WM_MOUSEMOVE 消息响应函数。 n具体程序如下: nvoid CXv003View::OnLButtonDown(UINT nFlags, CPoint point) { m_bDrawing = true; OriginPos = point; TargetPos = point; CView::OnLButtonDown(nFlags, point); } nvoid CXv003View::OnLButtonUp(UINT nFlags, CPoint point) { if (!m_bDrawing ) return; n m_bDrawing = false; CClientDC ClientDC(this); ClientDC.DPtoLP( ClientDC.SelectStockObject(NULL_BRUSH); CPen pen, *oldPen; pen.CreatePen(PS_SOLID,1,RGB(255,0,0)); oldPen = ClientDC.SelectObject( ClientDC.SetROP2( R2_COPYPEN ); ClientDC.MoveTo(OriginPos.x,OriginPos.y); ClientDC.LineTo(TargetPos.x,TargetPos.y); ClientDC.SelectObject(oldPen); CView::OnLButtonUp(nFlags, point); } nvoid CXv003View::OnMouseMove(UINT nFlags, CPoint point) { if ( !m_bDrawing ) return; CClientDC ClientDC(this); ClientDC.DPtoLP( ClientDC.SelectStockObject(NULL_BRUSH); CPen pen, *oldPen; pen.CreatePen(PS_SOLID,1,RGB(255,0,0)); oldPen = ClientDC.SelectObject( ClientDC.SetROP2(R2_NOT); ClientDC.MoveTo(OriginPos.x,OriginPos.y); ClientDC.LineTo(TargetPos.x,TargetPos.y); TargetPos = point; ClientDC.MoveTo(OriginPos.x,OriginPos.y); ClientDC.LineTo(TargetPos.x,TargetPos.y); ClientDC.SelectObject(oldPen); n CView::OnMouseMove(nFlags, point); } n编译执行。 5.3.4拖动技术 n将光标定位的图符或物体的图形,动态的 从屏幕一个位置移动到另一个位置。对于 拖动技术的一个扩展是动态扩大或缩小图 形,旋转图形到要求的方位。实现拖动功 能,只要在应用程序中,定义包围物体的 长方形窗口作为变换对象,当它再显示在 指定视区内,就可完成窗口内的图形变换 。
展开阅读全文
  麦档网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:第五章 交互技术
链接地址:https://www.maidoc.com/p-15699593.html

当前资源信息

农民佰佰

编号: 20180815204420729123

类型: 共享资源

格式: PPT

大小: 121.00KB

上传时间: 2019-11-09

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2018-2020 maidoc.com版权所有  文库上传用户QQ群:3303921 

麦档网为“文档C2C模式”,即用户上传的文档所得金币直接给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的金币归上传人(含作者)所有。
备案号:蜀ICP备17040478号-3  
川公网安备:51019002001290号 

本站提供办公文档学习资料考试资料文档下载


收起
展开