1、1第三章第三章第三章第三章 用户接口与交互式技术用户接口与交互式技术用户接口与交互式技术用户接口与交互式技术 用户接口设计用户接口设计用户接口设计用户接口设计 逻辑输入设备与输入处理逻辑输入设备与输入处理逻辑输入设备与输入处理逻辑输入设备与输入处理 交互式绘图技术交互式绘图技术交互式绘图技术交互式绘图技术 OpenGLOpenGLOpenGLOpenGL实现橡皮筋技术实现橡皮筋技术实现橡皮筋技术实现橡皮筋技术 OpenGLOpenGLOpenGLOpenGL实现拾取操作实现拾取操作实现拾取操作实现拾取操作 OpenGLOpenGLOpenGLOpenGL中的菜单功能中的菜单功能中的菜单功能中的
2、菜单功能233.1 3.1 3.1 3.1 用户接口设计用户接口设计用户接口设计用户接口设计 一个好的图形用户接口应具备以下特点:一个好的图形用户接口应具备以下特点:一个好的图形用户接口应具备以下特点:一个好的图形用户接口应具备以下特点:易于被用户理解并接受;易于被用户理解并接受;易于被用户理解并接受;易于被用户理解并接受;易于操作、使用;易于操作、使用;易于操作、使用;易于操作、使用;高效率、可靠性和实用性。高效率、可靠性和实用性。高效率、可靠性和实用性。高效率、可靠性和实用性。4用户模型用户模型用户模型用户模型 用户模型(用户模型(用户模型(用户模型(User ModeUser ModeU
3、ser ModeUser Mode)是用户接口设计的)是用户接口设计的)是用户接口设计的)是用户接口设计的基础,它提供给用户有关它所处理的对象以及基础,它提供给用户有关它所处理的对象以及基础,它提供给用户有关它所处理的对象以及基础,它提供给用户有关它所处理的对象以及作用于这些对象的处理过程的一个概念性模型。作用于这些对象的处理过程的一个概念性模型。作用于这些对象的处理过程的一个概念性模型。作用于这些对象的处理过程的一个概念性模型。用户模型依照定义对象和对对象进行的操作来用户模型依照定义对象和对对象进行的操作来用户模型依照定义对象和对对象进行的操作来用户模型依照定义对象和对对象进行的操作来定义图
4、形系统。定义图形系统。定义图形系统。定义图形系统。用户模型应尽可能地使用用户熟悉的概念而回用户模型应尽可能地使用用户熟悉的概念而回用户模型应尽可能地使用用户熟悉的概念而回用户模型应尽可能地使用用户熟悉的概念而回避一些计算机专业术语。避一些计算机专业术语。避一些计算机专业术语。避一些计算机专业术语。5显示屏幕的有效利用显示屏幕的有效利用显示屏幕的有效利用显示屏幕的有效利用 信息显示的布局合理性信息显示的布局合理性信息显示的布局合理性信息显示的布局合理性 充分而又正确地使用图符充分而又正确地使用图符充分而又正确地使用图符充分而又正确地使用图符 恰当地使用各种显示方法进行选择性的信息显恰当地使用各种
5、显示方法进行选择性的信息显恰当地使用各种显示方法进行选择性的信息显恰当地使用各种显示方法进行选择性的信息显示示示示6反馈反馈反馈反馈 反馈是计算机与用户对话的一个基本成分,用反馈是计算机与用户对话的一个基本成分,用反馈是计算机与用户对话的一个基本成分,用反馈是计算机与用户对话的一个基本成分,用来帮助用户对系统进行操作。来帮助用户对系统进行操作。来帮助用户对系统进行操作。来帮助用户对系统进行操作。反馈要求系统在接收到每次输入以后给出某种反馈要求系统在接收到每次输入以后给出某种反馈要求系统在接收到每次输入以后给出某种反馈要求系统在接收到每次输入以后给出某种类型的反应。类型的反应。类型的反应。类型的
6、反应。反馈信息通常应足够简捷清晰,引人注目,但反馈信息通常应足够简捷清晰,引人注目,但反馈信息通常应足够简捷清晰,引人注目,但反馈信息通常应足够简捷清晰,引人注目,但这些信息也不能过分突出,以至于干扰用户的这些信息也不能过分突出,以至于干扰用户的这些信息也不能过分突出,以至于干扰用户的这些信息也不能过分突出,以至于干扰用户的注意力。注意力。注意力。注意力。实现反馈必须考虑的因素是速度。实现反馈必须考虑的因素是速度。实现反馈必须考虑的因素是速度。实现反馈必须考虑的因素是速度。7一致性原则一致性原则一致性原则一致性原则 一致性原则是指在设计系统的各个环节时,应一致性原则是指在设计系统的各个环节时,
7、应一致性原则是指在设计系统的各个环节时,应一致性原则是指在设计系统的各个环节时,应遵从统一和简单的规则,保证不出现例外和特遵从统一和简单的规则,保证不出现例外和特遵从统一和简单的规则,保证不出现例外和特遵从统一和简单的规则,保证不出现例外和特殊的情况,无论信息显示还是命令输入都应如殊的情况,无论信息显示还是命令输入都应如殊的情况,无论信息显示还是命令输入都应如殊的情况,无论信息显示还是命令输入都应如此。此。此。此。按用户认为最正常、最合乎逻辑的方式去做,按用户认为最正常、最合乎逻辑的方式去做,按用户认为最正常、最合乎逻辑的方式去做,按用户认为最正常、最合乎逻辑的方式去做,这比保持单纯的一致性更
8、重要。这比保持单纯的一致性更重要。这比保持单纯的一致性更重要。这比保持单纯的一致性更重要。8减少记忆量减少记忆量减少记忆量减少记忆量 用户接口的操作应该组织得容易理解和记忆。用户接口的操作应该组织得容易理解和记忆。用户接口的操作应该组织得容易理解和记忆。用户接口的操作应该组织得容易理解和记忆。重要的原则是唤醒用户的识别而不是记忆。重要的原则是唤醒用户的识别而不是记忆。重要的原则是唤醒用户的识别而不是记忆。重要的原则是唤醒用户的识别而不是记忆。9回退和出错处理回退和出错处理回退和出错处理回退和出错处理 回退(回退(回退(回退(UndoUndoUndoUndo)机制,它指绘图系统允许用户)机制,它
9、指绘图系统允许用户)机制,它指绘图系统允许用户)机制,它指绘图系统允许用户沿着进行的操作步骤,一步步倒退,并删除已沿着进行的操作步骤,一步步倒退,并删除已沿着进行的操作步骤,一步步倒退,并删除已沿着进行的操作步骤,一步步倒退,并删除已做的操作。做的操作。做的操作。做的操作。对操作过程中的任何错误或失误,无论在何级对操作过程中的任何错误或失误,无论在何级对操作过程中的任何错误或失误,无论在何级对操作过程中的任何错误或失误,无论在何级别,都应有一定的改错、取消和修复措施。别,都应有一定的改错、取消和修复措施。别,都应有一定的改错、取消和修复措施。别,都应有一定的改错、取消和修复措施。设计一些好的诊
10、断程序和提供出错信息可帮助设计一些好的诊断程序和提供出错信息可帮助设计一些好的诊断程序和提供出错信息可帮助设计一些好的诊断程序和提供出错信息可帮助确定发生错误的原因。确定发生错误的原因。确定发生错误的原因。确定发生错误的原因。10联机帮助联机帮助联机帮助联机帮助 提供提示是帮助用户学习和使用的有效方式。提供提示是帮助用户学习和使用的有效方式。提供提示是帮助用户学习和使用的有效方式。提供提示是帮助用户学习和使用的有效方式。联机帮助(联机帮助(联机帮助(联机帮助(On Line HelpOn Line HelpOn Line HelpOn Line Help)能在用户操作过)能在用户操作过)能在用
11、户操作过)能在用户操作过程中的任何时刻提供请求帮助。程中的任何时刻提供请求帮助。程中的任何时刻提供请求帮助。程中的任何时刻提供请求帮助。11视觉效果设计视觉效果设计视觉效果设计视觉效果设计 视觉效果设计涉及用户接口的各个方面,如屏视觉效果设计涉及用户接口的各个方面,如屏视觉效果设计涉及用户接口的各个方面,如屏视觉效果设计涉及用户接口的各个方面,如屏幕的布局、色彩的使用、信息的安排等等,这幕的布局、色彩的使用、信息的安排等等,这幕的布局、色彩的使用、信息的安排等等,这幕的布局、色彩的使用、信息的安排等等,这里强调的是色彩的使用。里强调的是色彩的使用。里强调的是色彩的使用。里强调的是色彩的使用。通
12、常在选择色彩对比时以色调对比为主。通常在选择色彩对比时以色调对比为主。通常在选择色彩对比时以色调对比为主。通常在选择色彩对比时以色调对比为主。为减轻视觉疲劳,还应该在视野范围内保持均为减轻视觉疲劳,还应该在视野范围内保持均为减轻视觉疲劳,还应该在视野范围内保持均为减轻视觉疲劳,还应该在视野范围内保持均匀的色彩明亮度。匀的色彩明亮度。匀的色彩明亮度。匀的色彩明亮度。12适应不同的用户适应不同的用户适应不同的用户适应不同的用户 针对同一交互任务,交互式图形接口通常提供针对同一交互任务,交互式图形接口通常提供针对同一交互任务,交互式图形接口通常提供针对同一交互任务,交互式图形接口通常提供多种交互方式
13、以适应不同的用户。多种交互方式以适应不同的用户。多种交互方式以适应不同的用户。多种交互方式以适应不同的用户。133.2 3.2 3.2 3.2 逻辑输入设备与输入处理逻辑输入设备与输入处理逻辑输入设备与输入处理逻辑输入设备与输入处理 逻辑输入设备逻辑输入设备逻辑输入设备逻辑输入设备 输入模式输入模式输入模式输入模式14逻辑输入设备逻辑输入设备逻辑输入设备逻辑输入设备 图形输入设备从逻辑上分为六种(图形输入设备从逻辑上分为六种(PHIGSPHIGSPHIGSPHIGS、GKSGKSGKSGKS)。)。名称名称基本功能基本功能定位设备(定位设备(LocatorLocator)指定一个点的坐标位置(
14、指定一个点的坐标位置(x x,y y)笔划设备(笔划设备(StrokeStroke)指定一系列点的坐标指定一系列点的坐标数值设备(数值设备(ValuatorValuator)输入一个整数或实数输入一个整数或实数字符串设备(字符串设备(StringString)输入一串字符输入一串字符选择设备(选择设备(ChoiceChoice)选择某个菜单项选择某个菜单项拾取设备(拾取设备(PickPick)选择显示着的图形的组成部分选择显示着的图形的组成部分表表表表2 2 2 2.1.1.1.1 图形输入设备的逻辑分类图形输入设备的逻辑分类图形输入设备的逻辑分类图形输入设备的逻辑分类15逻辑输入设备逻辑输入
15、设备逻辑输入设备逻辑输入设备 定位设备定位设备定位设备定位设备有鼠标器、操纵杆、跟踪球、空间球、有鼠标器、操纵杆、跟踪球、空间球、有鼠标器、操纵杆、跟踪球、空间球、有鼠标器、操纵杆、跟踪球、空间球、数字化仪的触笔或手动光标等。数字化仪的触笔或手动光标等。数字化仪的触笔或手动光标等。数字化仪的触笔或手动光标等。定位设备的三种分类定位设备的三种分类定位设备的三种分类定位设备的三种分类 绝对坐标设备和相对坐标设备绝对坐标设备和相对坐标设备绝对坐标设备和相对坐标设备绝对坐标设备和相对坐标设备 直接设备和间接设备直接设备和间接设备直接设备和间接设备直接设备和间接设备 连续设备和离散设备连续设备和离散设备
16、连续设备和离散设备连续设备和离散设备16逻辑输入设备逻辑输入设备逻辑输入设备逻辑输入设备 笔划设备笔划设备笔划设备笔划设备:笔划设备的输入等于多次调用定位:笔划设备的输入等于多次调用定位:笔划设备的输入等于多次调用定位:笔划设备的输入等于多次调用定位设备,产生一系列的坐标值,根据产生的坐标设备,产生一系列的坐标值,根据产生的坐标设备,产生一系列的坐标值,根据产生的坐标设备,产生一系列的坐标值,根据产生的坐标值可产生多边形和曲线等。值可产生多边形和曲线等。值可产生多边形和曲线等。值可产生多边形和曲线等。定值设备定值设备定值设备定值设备:定值设备常用来输入各种参数和数:定值设备常用来输入各种参数和
17、数:定值设备常用来输入各种参数和数:定值设备常用来输入各种参数和数据。据。据。据。17逻辑输入设备逻辑输入设备逻辑输入设备逻辑输入设备 字符串设备字符串设备字符串设备字符串设备:即进行字符串输入。:即进行字符串输入。:即进行字符串输入。:即进行字符串输入。选择设备选择设备选择设备选择设备 选择设备用来选择菜单选项、属性选项和用选择设备用来选择菜单选项、属性选项和用选择设备用来选择菜单选项、属性选项和用选择设备用来选择菜单选项、属性选项和用于构图的对象形状等。于构图的对象形状等。于构图的对象形状等。于构图的对象形状等。常用的选择设备有功能键、热键和定位设备常用的选择设备有功能键、热键和定位设备常
18、用的选择设备有功能键、热键和定位设备常用的选择设备有功能键、热键和定位设备等等。等等。等等。等等。18BAECDP逻辑输入设备逻辑输入设备逻辑输入设备逻辑输入设备拾取设备拾取设备拾取设备拾取设备 拾取设备拾取设备拾取设备拾取设备:拾取设备用于选择场景中即将进行:拾取设备用于选择场景中即将进行:拾取设备用于选择场景中即将进行:拾取设备用于选择场景中即将进行变换、编辑和处理的部分。变换、编辑和处理的部分。变换、编辑和处理的部分。变换、编辑和处理的部分。方法方法方法方法 利用定位设备利用定位设备利用定位设备利用定位设备 冲突问题冲突问题冲突问题冲突问题图图图图2.1 2.1 2.1 2.1 定位设备
19、拾取定位设备拾取定位设备拾取定位设备拾取19PABCD逻辑输入设备逻辑输入设备逻辑输入设备逻辑输入设备拾取设备拾取设备拾取设备拾取设备冲突问题的解决冲突问题的解决冲突问题的解决冲突问题的解决 在图形对象生成时就对每一个对象确定其拾取在图形对象生成时就对每一个对象确定其拾取在图形对象生成时就对每一个对象确定其拾取在图形对象生成时就对每一个对象确定其拾取优先级。优先级。优先级。优先级。依次对拾取图形设立标志。依次对拾取图形设立标志。依次对拾取图形设立标志。依次对拾取图形设立标志。找距离最近的对象优先拾取。找距离最近的对象优先拾取。找距离最近的对象优先拾取。找距离最近的对象优先拾取。图图图图2.2
20、2.2 2.2 2.2 距离最近原则距离最近原则距离最近原则距离最近原则20PABCD逻辑输入设备逻辑输入设备逻辑输入设备逻辑输入设备拾取设备拾取设备拾取设备拾取设备 指定拾取窗口:指定拾取窗口:指定拾取窗口:指定拾取窗口:拾取窗口是以拾取窗口是以拾取窗口是以拾取窗口是以光标位置为中光标位置为中光标位置为中光标位置为中心的一个矩形心的一个矩形心的一个矩形心的一个矩形窗口。窗口。窗口。窗口。图图图图2.3 2.3 2.3 2.3 拾取窗口拾取窗口拾取窗口拾取窗口21BAECD逻辑输入设备逻辑输入设备逻辑输入设备逻辑输入设备拾取设备拾取设备拾取设备拾取设备 矩形包围。矩形包围。矩形包围。矩形包围。
21、直接键入结构直接键入结构直接键入结构直接键入结构名字。名字。名字。名字。图图图图2.4 2.4 2.4 2.4 矩形包围拾取矩形包围拾取矩形包围拾取矩形包围拾取22 输入模式即如何管理、控制多种输入设备进行输入模式即如何管理、控制多种输入设备进行工作。工作。常用的输入模式有请求(常用的输入模式有请求(requestrequestrequestrequest)、)、采样采样(samplesamplesamplesample)、)、事件(事件(eventeventeventevent)及其组合形式等及其组合形式等几种。几种。输入模式输入模式输入模式输入模式23 请求方式请求方式(request m
22、oderequest moderequest moderequest mode):输入设备在应用:输入设备在应用程序的控制下工作,程序在输入请求发出后一直程序的控制下工作,程序在输入请求发出后一直被置于等待状态直到数据输入。被置于等待状态直到数据输入。取样方式取样方式(sample modesample modesample modesample mode):此时,应用程序:此时,应用程序和输入设备同时工作,当输入设备工作时,存储和输入设备同时工作,当输入设备工作时,存储输入数据,并不断地更新当前数据,当程序要求输入数据,并不断地更新当前数据,当程序要求输入时,程序采用当前数据值。输入时,程序
23、采用当前数据值。输入模式输入模式输入模式输入模式24 事件方式事件方式(event modeevent modeevent modeevent mode):每次用户对输入设:每次用户对输入设备的一次操作以及形成的数据叫做一个事件备的一次操作以及形成的数据叫做一个事件。思想:一般一个事件发生时,往往来不及进思想:一般一个事件发生时,往往来不及进行处理,于是,就要把事件按先后次序排成行处理,于是,就要把事件按先后次序排成队列,以便先进先出,即先到的事件进入排队列,以便先进先出,即先到的事件进入排队,先被取出进行处理。队,先被取出进行处理。当设备被置成事件方式,程序和设备同时工当设备被置成事件方式,
24、程序和设备同时工作。作。输入模式输入模式输入模式输入模式253.3 3.3 3.3 3.3 交互式绘图技术交互式绘图技术交互式绘图技术交互式绘图技术 基本交互绘图技术基本交互绘图技术基本交互绘图技术基本交互绘图技术 三维交互技术三维交互技术三维交互技术三维交互技术26基本交互绘图技术基本交互绘图技术基本交互绘图技术基本交互绘图技术 回显回显回显回显图图图图2.5 2.5 2.5 2.5 回显回显回显回显27基本交互绘图技术基本交互绘图技术基本交互绘图技术基本交互绘图技术 约束约束约束约束 网格网格网格网格图图图图2.6 2.6 2.6 2.6 约束和网格约束和网格约束和网格约束和网格28基本交
25、互绘图技术基本交互绘图技术基本交互绘图技术基本交互绘图技术 引力域引力域引力域引力域 橡皮筋技术橡皮筋技术橡皮筋技术橡皮筋技术图图图图2.7 2.7 2.7 2.7 橡皮筋技术橡皮筋技术橡皮筋技术橡皮筋技术29基本交互绘图技术基本交互绘图技术基本交互绘图技术基本交互绘图技术 草拟技术草拟技术草拟技术草拟技术图图图图2.8 2.8 2.8 2.8 草拟技术草拟技术草拟技术草拟技术(a)(a)(a)(a)沿光标移动路经保留单个点坐标沿光标移动路经保留单个点坐标 (b)(b)(b)(b)用曲线拟合用曲线拟合30基本交互绘图技术基本交互绘图技术基本交互绘图技术基本交互绘图技术 拖动拖动拖动拖动图图图图
26、2.9 2.9 2.9 2.9 拖动拖动拖动拖动技术技术技术技术(a)(a)(a)(a)两图形对象的初始位置两图形对象的初始位置 (b)(b)(b)(b)拖对象进行调整拖对象进行调整 (c)(c)(c)(c)最终的装配位置最终的装配位置31基本交互绘图技术基本交互绘图技术基本交互绘图技术基本交互绘图技术 旋转旋转旋转旋转图图图图2.10 2.10 2.10 2.10 旋转旋转旋转旋转技术技术技术技术32基本交互绘图技术基本交互绘图技术基本交互绘图技术基本交互绘图技术 形变形变形变形变图图图图2.11 2.11 2.11 2.11 形变形变形变形变技术技术技术技术33三维交互技术三维交互技术三维
27、交互技术三维交互技术 三维图形数据的输入三维图形数据的输入三维图形数据的输入三维图形数据的输入 三维定位三维定位三维定位三维定位 三维定向三维定向三维定向三维定向34 绝大部分系统具有多个输入设备,每个设备都绝大部分系统具有多个输入设备,每个设备都绝大部分系统具有多个输入设备,每个设备都绝大部分系统具有多个输入设备,每个设备都 可能被用户在任意时间触发可能被用户在任意时间触发可能被用户在任意时间触发可能被用户在任意时间触发 每个触发生成一个事件,事件的度量信息放到每个触发生成一个事件,事件的度量信息放到每个触发生成一个事件,事件的度量信息放到每个触发生成一个事件,事件的度量信息放到 事件队列中
28、,用户程序检查该队列事件队列中,用户程序检查该队列事件队列中,用户程序检查该队列事件队列中,用户程序检查该队列事件模式事件模式事件模式事件模式35事件类型事件类型事件类型事件类型 窗口:改变尺寸、重新显示、缩成图标窗口:改变尺寸、重新显示、缩成图标窗口:改变尺寸、重新显示、缩成图标窗口:改变尺寸、重新显示、缩成图标 鼠标:点击一个或多个按钮,移动鼠标:点击一个或多个按钮,移动鼠标:点击一个或多个按钮,移动鼠标:点击一个或多个按钮,移动 键盘:按下或释放某个键键盘:按下或释放某个键键盘:按下或释放某个键键盘:按下或释放某个键 空闲:空闲:空闲:空闲:“没有事件没有事件没有事件没有事件”-可以定义
29、如果队列中没有其它事件可以进行可以定义如果队列中没有其它事件可以进行可以定义如果队列中没有其它事件可以进行可以定义如果队列中没有其它事件可以进行 的何种操作的何种操作的何种操作的何种操作36 回调是事件驱动输入方式的程序接口回调是事件驱动输入方式的程序接口回调是事件驱动输入方式的程序接口回调是事件驱动输入方式的程序接口 为图形系统可以识别的每种类型事件定义一个回调为图形系统可以识别的每种类型事件定义一个回调为图形系统可以识别的每种类型事件定义一个回调为图形系统可以识别的每种类型事件定义一个回调函数函数函数函数 当相应的事件出现时,就会自动执行用户当相应的事件出现时,就会自动执行用户当相应的事件
30、出现时,就会自动执行用户当相应的事件出现时,就会自动执行用户 指定的函数指定的函数指定的函数指定的函数 GLUTGLUTGLUTGLUT示例示例示例示例 glutMouseFunc(mymouse);glutMouseFunc(mymouse);glutMouseFunc(mymouse);glutMouseFunc(mymouse);回调回调回调回调37GLUTGLUTGLUTGLUT中的回调函数中的回调函数中的回调函数中的回调函数 GLUTGLUTGLUTGLUT识别在各种窗口系统识别在各种窗口系统识别在各种窗口系统识别在各种窗口系统(Windows,X,(Windows,X,(Windo
31、ws,X,(Windows,X,Macintosh)Macintosh)Macintosh)Macintosh)中都有的一组事件中都有的一组事件中都有的一组事件中都有的一组事件 glutDisplayFuncglutDisplayFuncglutDisplayFuncglutDisplayFunc glutMouseFuncglutMouseFuncglutMouseFuncglutMouseFunc glutReshapeFuncglutReshapeFuncglutReshapeFuncglutReshapeFunc glutKeyboardFuncglutKeyboardFuncglut
32、KeyboardFuncglutKeyboardFunc glutIdleFuncglutIdleFuncglutIdleFuncglutIdleFunc glutMotionFuncglutMotionFuncglutMotionFuncglutMotionFunc glutPassiveMotionFuncglutPassiveMotionFuncglutPassiveMotionFuncglutPassiveMotionFunc38GLUTGLUTGLUTGLUT中的事件循环中的事件循环中的事件循环中的事件循环 记住记住记住记住:在任何利用在任何利用在任何利用在任何利用GLUTGLUTG
33、LUTGLUT的程序中,的程序中,的程序中,的程序中,main()main()main()main()的最的最的最的最后一行实质语句必须是后一行实质语句必须是后一行实质语句必须是后一行实质语句必须是 glutMainLoop();glutMainLoop();glutMainLoop();glutMainLoop();这条语句使得程序进入一个无穷的事件循环这条语句使得程序进入一个无穷的事件循环这条语句使得程序进入一个无穷的事件循环这条语句使得程序进入一个无穷的事件循环 每经过事件循环一次,每经过事件循环一次,每经过事件循环一次,每经过事件循环一次,GLUTGLUTGLUTGLUT进行下述操作进行下述操作进行下述操作进行下述操作-查看事件队列中的事件查看事件队列中的事件查看事件队列中的事件查看事件队列中的事件-对于在队列中的每个事件,如果定义了相应的回对于在队列中的每个事件,如果定义了相应的