1、第2章 RAPTOR图形与视窗交互基于RAPTOR的可视化计算案例教程学习目标RAPTOR环境如何绘制图形?用户如何与RAPTOR图形环境交互?RAPTOR图形窗口简介可视化计算的重要手段是使用图形来描述计算问题、求解过程和结果 RAPTOR过程调用在专门的图形视窗中实现绘制矩形,圆,弧、椭圆图形和线条,并在几何形体中填充颜色,也可以在图形窗口中显示文本和数字RAPTOR图形视窗可接受用户使用鼠标与键盘与之交互,为游戏程序设计提供支持图形窗口的打开与定义Open_graph_Window(X_Size,Y_Size)RAPTOR图形窗口和坐标表示图形窗口的应用过程右图程序所示,图形窗口的打开和
2、关闭通常是图形应用中的第一和最后一个调用命令绘图过程与参数-常量绘图过程与参数-变量绘图过程与参数-公式绘制弧线Draw_Arc(X1,Y1,X2,Y2,Startx,Starty,Endx,Endy,Color)绘制弧线的思考题在一些图形原稿的输入中,例如手绘的动漫原型输入到计算机中时,离不开弧线的输入,问题是在弧线输入时,如何才能获取到定位所需的8个坐标点?非标区域绘制-三角形色彩填充:Flood_Fill(X,Y,Color)简单的图形窗口应用图形窗口输入主要考虑包括:如何提示用户进行输入?如何判断用户是否已经输入?采用阻塞型输入和非阻塞型输入?采用鼠标还是键盘进行输入?如果用户输入有错
3、,例如按下非输入提示的键或者点击了输入区域以外的区域,程序是否需要进行提示?名词解释阻塞型输入使用阻塞型输入阻塞型输入命令时,将暂停程序运行,等待用户输入,直到用户输入后,程序才继续运行;非阻塞型输入使用非阻塞型输入非阻塞型输入命令可以得到有关鼠标或键盘的当前信息,但不影响执行中的程序一个圆形按钮输入程序的设计按钮程序:maim子图负责用户输入全局控制绘制按钮画面(creat子图)等待用户选择(Get_Mouse_Button)检测用户点击(detection子图)最后显示用户的输入结果create子图打开和定义窗口大小循环绘制4个按钮提示用户输入Detection子图子图用循环检测点击循环包
4、含两个过程:判断点击区域和显示点击出错子图设计中,用户如果不选中某个按钮,实际上不能退出子图按钮输入程序的设计优缺点+鼠标位置的计算非常关键,这里使用了圆的标准方程“(x-a)2+(y-b)2=r2”(在算法中的表达为(x-a)2+(y-125)2=2500的决策语句)进行判断-执行效率较低-一旦出错,出错信息没有清除功能一个矩形按钮输入程序的设计Main子图负责用户输入全局控制绘制按钮画面(drawbuttons子图)等待用户选择(Get_Mouse_Button)用户输入提示检测用户点击(detection子图)drawbuttons子图detection子图子图用分支处理点击左侧分支判断
5、点击区域;右侧表示出错子图设计中,无论选择对错,一律退出子图思考与实验题detection子图中的决策条件:Y=200 为何只有一个值?*矩形按钮比圆形按钮程序在算法上有何改进?detection子图子图用分支处理点击左侧分支判断点击区域;右侧表示出错子图设计中,无论选择对错,一律退出子图在图形视窗中画点并自动连线设计的基本思路:手动接受用户绘制的点;按照定义,使用专门语句完成部分不规则的边连接,使用循环完成部分有规则的连接;输出所有点的位置坐标,有利于将来将点的位置保存到数组,并从数组中恢复这个图的同构图。Drawpoints子图(随意点击)绘图的效果Drawpoints子图两种记录圆点位置
6、的方法,其中s字符串可以直接输出到文件中图论图形中的边的绘制(一)按照预定的要求绘制无规律的两点之间的边图论图形中的边的绘制(二)使用循环方式绘制符合某种规律的边一个算法的两种输出(一)可视化的结果输出形式一个算法的两种输出(二)主控台的字符串形式:(297,694)(627,223)(684,661)(281,234)(106,494)(823,438)-Run complete.78 symbols evaluated.-算法输入输出的两种形式的讨论可视化输入、输出方式:方便与问题的原型进行比对,减少输入错误,减少输入时的工作量,符合人机交互需求;字符型的输入、输出:部分图论问题可以使用字
7、符形式进行输入、输出,但不是全部;字符形式的输出可以方便文本文件的结果保存。在图形视窗中接受键盘输入键盘输入案例的要点点阵图像的载入图片中文字的设计无需考虑坐标问题键盘输入指令Get_Key_String在RAPTOR中返回字符形式的键值,例如”a”,”A”,”PageDown”键盘输入指令与程序功能调用有关点阵图形的应用思考题RAPTOR支持点阵图形的特点,使得许多游戏程序可以在此环境下,以可视的形式来实现。例如,石头、剪刀、布这个游戏是大家普遍熟悉的,可以实验在网上寻找该游戏的图片,剪裁后应用在自己设计的游戏程序中!在图形视窗中绘制曲线曲线绘制的主要过程:通过对话窗口输入函数的参数值在图形
8、窗口绘制坐标与参考线在规定区间内,以的增量进行计算,并使用画圆点的方式绘制曲线曲线绘制完成后,使用阻塞型输入语句“Wait_for_Kay”将绘制完成的曲线进行展示,并等待用户输入任意键结束通过对话输入参数并打开窗口绘制坐标与参考线计算、增量和绘制考虑一下,为何没有使用画线,而是用画点的方式,进行曲线的绘制绘制的曲线区间,是从哪里到哪里?动画绘制效果的输出使用矢量方式在图形界面中绘制动画,是可视化计算中的一种重要的计算表达方式注意传统动画电影使用多帧放映,使用每一幅位图之间的差异来表现动画效果。而工程图和卡通漫画等,它们主要由线条和色块组成,用代数式来表达每个元素。然后把这些元素的代数式和它们
9、的属性作为文件存盘,这样生成的就叫矢量图RAPTOR的矢量动画语句Freeze_graph_Window和Update_graph_Window可用来平滑动画显示Freeze_graph_Window通过为图形对象提供特殊的屏幕缓冲区,图像的重绘数据可以直接从缓冲区读取在Freeze_graph_Window被调用语句后(Unfreeze_graph_Window调用语句前),该缓冲区保存了所有图形调用语句的绘制结果动态图象-钟摆绘制流程图初始部分:注意在Freeze_graph_Window之后,所有图形绘制的结果保存在缓存区钟摆绘制流程图Clear_windows语句擦除前一帧图像计算与图形绘制被保存在缓存Update_Graph_Windows将缓存的内容输出钟摆绘制流程图作业请设法将一个卡通人物或动物的形象使用绘图方式输入到RAPTOR的视窗环境中。方法提示:可以从因特网上下载相应的图片,然后使用画图等制图工具打开,使用画图工具中的坐标值获得图片各点的坐标值,然后使用RAPTOR的绘图指令进行相应的绘制,在绘图过程中,注意各个绘图软件的坐标原点设置的差别,并设法予以解决。End of ch2