计算机图形学4.ppt
《计算机图形学4.ppt》由会员分享,可在线阅读,更多相关《计算机图形学4.ppt(45页珍藏版)》请在冰豆网上搜索。
上机思考题利用二维变换矩阵实现几何变换利用二维变换矩阵实现几何变换.(先画一个多边形先画一个多边形,对它进行平移、旋转、对称对它进行平移、旋转、对称和变比操作,利用第二章的画线算法)和变比操作,利用第二章的画线算法)根据图形输入信息的不同性质,根据图形输入信息的不同性质,GKS和和PHIGS把输入把输入设备在逻辑上分成以下几类设备在逻辑上分成以下几类:
定位设备定位设备(Locator)描画设备描画设备(Stroke)定值设备定值设备(Valuator)选择设备选择设备(Choice)拾取设备拾取设备(Pick)字符串设备字符串设备(String)为了使图形软件包独立于具体的硬件设施,图形输入命为了使图形软件包独立于具体的硬件设施,图形输入命令不涉及具体的输入设备,而只涉及该命令所需的数据。
令不涉及具体的输入设备,而只涉及该命令所需的数据。
图形软件所需的信息从各种各样的图形设备中输入。
交互设备在逻辑上分成以下几类:
1定位设备(Locator):
定位设备用来指定用户空间的一个位置,其输入方式包括:
直接或间接在屏幕上进行,通过方向命令,数值坐标等等。
其对应的物理设备包括:
光笔、触摸屏、数字化仪、鼠标、操纵杆、跟踪球、键盘的数字键等。
定位设备分为三类:
直接设备直接设备和间接设备间接设备绝对坐标设备绝对坐标设备和相对坐标设备相对坐标设备连续设备连续设备和离散设备离散设备2描画描画设备(Stroke):
描画描画设备用来指定用户空间的一组有序点的位置,其输入方式与对应的物理设备基本和定位设备相一致。
笔划设备的输入等于多次调用定位设备,产生一系列的坐标值,根据产生的坐标值可产生多边形和曲线等33定值设备(Valuator):
定值设备用来为应用程序输入一个值(实数),其输入方式包括:
直接输入数值、通过字符串取值、通过比例尺输入、上下计数控制命令等。
对应的物理设备包括旋钮、键盘、数字化仪、鼠标、方向键、编程功能键等。
4选择设备(Choice):
选择设备用来为应用程序在多个选项中选定一项,其输入方式包括:
直接或间接在屏幕上进行、字符串名字、时间扫描、手写输入、声音输入等。
其对应的物理设备包括光笔、触摸屏、数字化仪、鼠标、操纵杆、跟踪球、字符串输入设备、编程功能键、声音识别仪。
55拾取设备(Pick):
拾取设备用来在处理的模型中选取一个对象,从而为应用操作处理确定目标。
其输入方式包括:
直接在屏幕上进行、时间扫描、字符串名字。
其对应的物理设备包括:
各种定位设备、编程功能键、字符串输入设备。
6字符串设备(String):
字符串设备用来向应用程序输入字符串,其输入方式包括:
键盘、手写输入、声音输入、菜单输入,其对应的物理设备:
数字、字母键盘,数字化仪,光笔,声音识别仪,触压板等。
4.2.1概述概述在交互输入过程中,常用的控制方式是请求、取样、在交互输入过程中,常用的控制方式是请求、取样、事件及其组合形式等事件及其组合形式等4种。
种。
输入控制的方式取决于程序和输入设备之间是如何相互输入控制的方式取决于程序和输入设备之间是如何相互作用的。
例如,可用程序来初始化输入设备,或者程序与输作用的。
例如,可用程序来初始化输入设备,或者程序与输入设备同时工作,或者由设备初始化输入数据。
入设备同时工作,或者由设备初始化输入数据。
输入控制方式都可定义相对应的输入命令,而且图形交输入控制方式都可定义相对应的输入命令,而且图形交互系统允许对每种逻辑设备执行相应的输入操作。
例如,可互系统允许对每种逻辑设备执行相应的输入操作。
例如,可设置如下命令设置如下命令:
set_locator_mode(ws,device_code,input_mode)set_locator_mode(ws,device_code,input_mode)表4.1设备编码及其类型对应关系操纵杆8触摸屏4语音输入器11按钮7光笔3轨迹球10刻度盘6图形输入板2鼠标器9指拇轮5键盘1物理设备类型设备编码物理设备类型设备编码物理设备类型设备编码4.2.1概述(续)概述(续)set_stroke_mode(4,2,event)4.2.2请求方式请求方式在请求方式下,只有输入设置命令在请求方式下,只有输入设置命令(或语句或语句)对相应的设对相应的设备设置所需要的输入方式后,该设备才能作相应的输入处理。
备设置所需要的输入方式后,该设备才能作相应的输入处理。
在输入命令中,每种逻辑设备所包括的参数是和输入数据在输入命令中,每种逻辑设备所包括的参数是和输入数据类型有关的。
举例如:
类型有关的。
举例如:
2.request_stroke(ws,device_code,n,xa,ya)请求方式下的笔划输入命令请求方式下的笔划输入命令,输入的输入的n个点的坐标个点的坐标存放在数组存放在数组xa和和ya中。
中。
3.request_pick(ws,device_code,segment-id)应用程序中拾取到输入的图段应用程序中拾取到输入的图段1.request_locator(ws,device_code,x,y)该命令把定位器置成请求输入控制方式,其中该命令把定位器置成请求输入控制方式,其中x、y用来存储一个点的坐标值。
用来存储一个点的坐标值。
请求方式的工作过程:
请求方式的工作过程:
当程序运行到请求语句就向输入设备提出输当程序运行到请求语句就向输入设备提出输入请求;同时停止运行,等待输入设备的输入数入请求;同时停止运行,等待输入设备的输入数据。
直到请求满足之后,程序才继续运行。
当程据。
直到请求满足之后,程序才继续运行。
当程序运行时,输入设备处于等待状态,等待程序的序运行时,输入设备处于等待状态,等待程序的请求。
请求。
待到程序的请求出现,输入设备立即进入工作,待到程序的请求出现,输入设备立即进入工作,直到满足程序的这一请求为止。
然后又重新处于直到满足程序的这一请求为止。
然后又重新处于等待状态。
等待状态。
因此,在请求方式下,程序和输入设备轮流因此,在请求方式下,程序和输入设备轮流交换工作状态和等待状态,由程序支配输入设备交换工作状态和等待状态,由程序支配输入设备的启动。
的启动。
4.2.2请求方式请求方式4.2.2请求方式(续)请求方式(续)请求方式的工作过程4.2.3采样方式采样方式一旦对一台或多台设备设置了取样方式,立即就可以一旦对一台或多台设备设置了取样方式,立即就可以进行数据输入,而不必等待程序中的输入语句。
进行数据输入,而不必等待程序中的输入语句。
设置定位设备为取样方式的命令是:
设置定位设备为取样方式的命令是:
sample_locator(ws,device_code,x,y)将其他逻辑设备设置为取样方式的命令都与此类似将其他逻辑设备设置为取样方式的命令都与此类似在采样模式输入过程中,程序和输入设备分别同时运在采样模式输入过程中,程序和输入设备分别同时运行。
输入设备不断地产生数据,并把数据输入数据缓存区,行。
输入设备不断地产生数据,并把数据输入数据缓存区,从而不断刷新数据缓存区的内容。
程序在运行中当遇到采从而不断刷新数据缓存区的内容。
程序在运行中当遇到采样语句,就到数据缓存存储区中去取数据,当然,所取的样语句,就到数据缓存存储区中去取数据,当然,所取的是最新刷新的输入数据。
是最新刷新的输入数据。
4.2.3采样方式采样方式取样方式的工作过程4.2.4事件方式事件方式当某台设备被设置成事件方式,程序和设备将同时工作。
当某台设备被设置成事件方式,程序和设备将同时工作。
向设备输入的数据都可存放在一个事件队列或输入队列中。
在任向设备输入的数据都可存放在一个事件队列或输入队列中。
在任一个时刻,事件队列按输入数据的顺序存放数据,并含有一个最一个时刻,事件队列按输入数据的顺序存放数据,并含有一个最大的数据类型项,在队列中的输入数据可按照逻辑设备类型、工大的数据类型项,在队列中的输入数据可按照逻辑设备类型、工作站号、物理设备编码进行检索。
作站号、物理设备编码进行检索。
在应用程序中,检索事件队列可用下述命令:
在应用程序中,检索事件队列可用下述命令:
await_event(time,device_class,ws,device_code)time是应用程序设置的最长等待时间,当事件队列为空时,事是应用程序设置的最长等待时间,当事件队列为空时,事件处理进程就挂起,直到最长等待时间已过或又有一个事件进件处理进程就挂起,直到最长等待时间已过或又有一个事件进入,才恢复事件处理进程入,才恢复事件处理进程.若在输入数据之前,等待时间就已过若在输入数据之前,等待时间就已过去,则参数去,则参数device_class就返回一个空值。
当就返回一个空值。
当time被赋成零或被赋成零或当队列为空,程序就立即返回到其它的处理过程。
当队列为空,程序就立即返回到其它的处理过程。
当用当用await_event命令使某设备进入事件输入控制方式,命令使某设备进入事件输入控制方式,而且事件队列为非空时,队列中的第一个事件就被传送到而且事件队列为非空时,队列中的第一个事件就被传送到当前当前事件记录中。
事件记录中。
用户可用下述命令从当前事件记录中得到一个定位数据用户可用下述命令从当前事件记录中得到一个定位数据get_locator(x,y)下述程序用下述程序用await_event、get_locator命令从命令从1号工作站的号工作站的图形输入板上输入一个点集,并用直线段连接这些点。
图形输入板上输入一个点集,并用直线段连接这些点。
set_stroke_mode(1,2,event);if(device_class=stroke)await_event(60,device_class,ws,device_code);get_stroke(n,xa,ya);polyline(n,xa,ya);4.2.4事件方式事件方式4.2.4事件方式事件方式(续续)在事件方式下,若只有这台图形输入板处于激活状态,在事件方式下,若只有这台图形输入板处于激活状态,那么这个那么这个if条件就不需要了。
条件就不需要了。
在事件方式下,可同时应用多台输入设备以加快交互处在事件方式下,可同时应用多台输入设备以加快交互处理。
下面的程序从键盘输入所需选择的属性并从图形输入板理。
下面的程序从键盘输入所需选择的属性并从图形输入板输入数据画折线。
输入数据画折线。
4.2.4事件方式事件方式(续)set_polyline_index
(1);set_stroke_mode(1,2,event);(把图形输入板设成笔划设备)set_choice_mode(1,7,event);(把键盘设成选择设备)doawait_event(60,device_class,ws,device_code);if(device_class=choice)get_choice(option);et_polyline_index(option);elseif(device_class=stroke)get_stroke(n,xa,ya);polyline(n,xa,ya);while(device_class)事件方式的输入过程4.2.4事件方式事件方式(续)在事件模式数据输入过程中,输入设备和程序分别各自运在事件模式数据输入过程中,输入设备和程序分别各自运行。
输入设备所产生的数据被组织成事件结点,排入事件队列行。
输入设备所产生的数据被组织成事件结点,排入事件队列中等待程序的处理。
程序运行到事件处理语句时,就从事件队中等待程序的处理。
程序运行到事件处理语句时,就从事件队列中取出队首事件予以处理。
如果事件队空,程序则等待一定列中取出队首事件予以处理。
如果事件队空,程序则等待一定的时间片,等待事件的发生的时间片,等待事件的发生4.2.5输入控制方式的混合使用输入控制方式的混合使用在不同输入控制方式下同时应用各种输入设备的情况。
操作目在不同输入控制方式下同时应用各种输入设备的情况。
操作目的是要拖动一个形体在屏幕上运动,当达到最终位置时,可按的是要拖动一个形体在屏幕上运动,当达到最终位置时,可按动特定键来终止这种拖动。
光笔的位置是由取样方式得