2023年7月29日发(作者:)
摘要互联网与教育是推动社会进步的两个车轮,网络远程教育恰恰是这两者完美结合的产物。随着信息技术的不断发展,如何将信息技术应用于教育领域,实现信息技术与课程的整合,是当前信息化进程中的教育技术发展研究的一个重要方面。目前,多数远程教育平台是以简单的信息共享方式为主的个体学习,不能体现出教与学的互动性,缺乏实时性的交互。人类总是对丰富多彩的、生动新鲜的、耳闻目睹的信息更感兴趣,更容易接受、吸收、铭记。远程网络教育也应遵循这样的自然规律,才能达到教育的本质目的。因此,远程网络教育教学平台的设计应考虑教育性、交互性、易用性和兼容性等因素,并应充分利用多媒体教学,只有集音频、协同操作、应用共享、文字交流于一体的多方位教学,才能够真正高效地实现师生之间的教学互动,从而取得更好的教学效果。本文以远程教育的相关理论为起点,针对该系统涉及的各个关键技术进行了深入的研究和探讨,在此基础上,详细的论述了实时交互支持系统的整体设计方案和实现方法。涉及的关键技术主要包括:可扩展矢量图形语言的描述、图形对象二维变换、拾取算法、自适应声音缓冲区和桌面图像编解码等等。论文首先分析了目前远程教学系统存在的主要问题,针对论文将使用的关键技术进行了探讨,随后结合实际教学过程中的具体需求设计了系统架构,划分了功能模块,接下来是系统各主要功能模块的详细设计与具体实现的论述。为满足需要大量绘图的课程的实际需要,使远程教育处于异地的教师和学生对共享图形方便、高效地交互式绘制、修改,本系统应用计算机图形学的相关理论及算法,实现了电子白板功能。电子白板模块参考SV6规范,自定义了用于图形生成的矢量图库描述语法以及用于同步各节点电子白板场景的图形网络传输格式,实现了网络信息实时发布。图形的交互式编辑部分主要研究了图元的拾取算法和使用变换矩阵实现对图元的旋转、比例缩放和平移等二维变换。语音通信模块中,由于网络传输时延的抖动会导致声音不流畅,播放缓冲区设置的大可以有效地解决因为抖动带来的撕裂音,提高话音质量,但是播放缓冲区设置的过大却会导致延时加大,本文提出了自适应声音缓冲区调整策略有效地解决了这一问题。远程桌面模块针对桌面图像的特点,提出帧间差分游程编码方法,并将其编码结果使用6Zip算法再次压缩,这种压缩方案综合兼顾了压缩比和压缩时间的考量。最后,本论文提出了理论研究和实践开发进一步发展的方向。关键字:远程教育,可扩展矢量图形描述语言,自适应声音缓冲区,差分游程编码AbstractInteractandeducationarethetwowheelstopromotesocialprogress.Longdistanceeducationisexactlythecombinationofthetwo.Asinformationtechnologycontinuestodevelop.howt0applyittoeducationtointegratewitheurricultnniscurrentlyprocessallimportantaspectofeducationaltechnologydevelopmentresearchintheofinfomationization.Currently,mostaslong-distanceeducationplatformisasimplyimplementedindividuallearninginwayofinformafionsharing,whichlacksofthefeatureofreal-timeandinteractionbetweenteachingandlearning.MankindBrealwaysllloreinterestedwiththeinformationwhichiscolorful,lively舭shortakenattheirface.Thiseasytobekindofinformationismorereceptive,absorptive,andshouldalsofollowtheIlaRlreinremembered.Long-distanceeducationordertoachievetheessentialpurposeofeducation.Therefore,thedesignoflong-distanceeducationnetworkplatformshouldincludethefeaturesofeducational,useinteraction,easy-to-use.compatibility,andmulti-media,suchcanweaSs0on.Onlythroughmakingfullofvoice,coordinatedoperation,applicationsharing,textexchanges,reallyachieveefficientinteractionbetweenteachersandstudentsandbettereffect.Takingthetheoriesoflongdistanceeducationasastartingpo硫,wemal【eadeepresearchonitsrelatedtechniques,thendesignandrealizethesolutionofreal-timeanddescriptionofinteractivesupportingscalablevectorsystem.Therelatedtechniquesincludethegraphics,two—dimensiontransformation,collectalgorithm,adaptivevoicebuffer,compressionanddecompressionofthedesktopimag岛ete.Firstly,thearticleanalyzesmainexistingproblemsofthelongdistanceeducationsystemandmakesaresearchtoonitskeytechniques.Secondly,wedesignthesystemoftheactualteachingprocessandmakearchitectureaccordingtherequirementsfunctionalmoduledivision.Thirdly,thearticledetailsthedesignofthekeyfunctionalmodulesandimplements.Toconvenientlymeettheneedsoffi-equentdrawingforsomeeurricuhma,andmaketeachersandstudentswhoaredisperseddrawandmodifythesharinggraphicsandeffectivelyinaninteractiveway,thesystemrealizestheWhiteboardfunctionwiththeapplicationofcomputergraphicstheoryandalgorithms.TheWhhboardmodulewhichrealizesthenetworkinformationdefinesthesyntaxofscalablestandardreal-timedistributionofvectorgalleryreferringSVGandthegraphicslmnsmissionformatforsynchronizingthesceneonofthegraphicnodes.Asfortheinteractivegraphicediting,thearticlemainlyfocuseselementcollectalgorithmandtwo-dimensiontransfon-nationsuchasrotation,scaleandtranslationusingconvertmatrix.Invoicecommunicationmodule,thejitteroftheupanetworktransmissioncouldleadtovoiceunfluent.SettInglargebuffercouldeffectivelyresolvethevoicetearingandimprovevoicequality.Butthismethodmaycauseexcessivedelay.Thearticlepresentsadaptivevoicebufferadjustmentstrategywhicheffectivelyresolvestheproblem.Inremotedesktopmodule,thearticlepresentsinterfrarnedifferencerun·lengthencodingtargetingthefeatureofdesktopimage.Theoutputisre。compressedusingOZipalgorithm.Thisresolutiontakesboththecompressionratioandtimeconsumingintoconsideration.FinallythearticlepointsoutthedirectionoffBl'thertheoreticalstudyandpracticaldevelopment.学位论文独创性声明本人所呈交的学位论文是我在导师的指导下进行的研究工作及取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文不包含其他个人已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。作者签名:窿!喳盘日期:兰里!!授权使用声明本人完全了解华东师范大学有关保留、使用学位论文的规定,学校有权保留学位论文并向国家主管部门或其指定机构送交论文的电子版和纸质版。有权将学位论文用于非赢利目的的少量复制并允许论文进入学校图书馆被查阅。有权将学位论文的内容编入有关数据库进行检索。有权将学位论文的标题和摘要汇编出版。保密的学位论文在解密后适用本规定。学位论文作者签名:枷吻糟日期:型U导师签名:洳OriginalityNoticeInpresentingthisthesisinpartialfulfillmentoftberequirementsfortheEastChinaNormalUniversity,1warrantthatthisthesisisoriginalandM∞tar’sdegreeatanyofthetechniquespresentedinthethesishavebeenfiguredoutbym^AnyofthereferencestDthecopyright,wademarkpatent,statutoryright,01"proprietyrightofothershavebeenexplicitlyacknowledgedandincludedintheReferencessectionattlleendofthisthesis.s;弘咖糟:—垒必Date:埘"CopyrightNoticeIhereinagreethaltheLibraryofECNUshallmakeitscopiesfreelyavailableforinspection.IfRrtheragreethatextensivecopyingof也c血esisisallowableonlyfbrscholarlypurposes.inpamcuIaf;aoringthecontemofth/sthesisintorelevantdatabases,酗well鹅compilingandpublishingthetitleandabstractofthisthesis.consistentwith”fairuse”硒prescribedintheCopyrightLawof]hePeople'sRepubficofChina.Sign咖re:整巫箩Date:—2:塑第1章概述1.1实时交互支持系统的提出1.1.1远程教育远程教育就是教育机构借助媒体技术和各种教育资源而实施的超越传统校园时空限制的教育活动形式。远程教育是适应社会发展的需要,并且伴随现代媒体技术的发展而迅速成长壮大的教育活动形式。它有着特定的教育信息传输和交流手段,有着适应远程教育方式的信息资源,有着特定的教育管理制度和方法,有着特定的教育管理机构等。远程教育由于信息传送方式和手段不同,其发展经历了三个阶段,第一是以邮件传送的纸介质为主的函授教育阶段;第二是以广播电视,录音录像为主的广播电视教育阶段;第三是通过计算机,多媒体与远程通讯技术相结合的网络远程教育阶段。网络远程教育手段有以下优点;教师的讲授和学生的学习可以在不同地点同时进行,师生之间可以进行充分的交流;学生能够根据自己的需要自主安排学习时间和地点,自由选择学习内容,自行安排学习计划,随时提出学习中的问题并能及时地得到解答;网络远程教育手段有利于个体化学习。它以学生自学为主,充分发挥学生自主学习的主动性,积极性及创造性;网络远程教育手段可以为学生提供优质的教学服务。教师可以及时地了解学生的学习进度和对课程的理解程度,解答学生所提出的问题。网络远程教育给教与学的概念赋予了新的内涵,将给教育带来深刻的变革,推动教育观念,教育思想,教育内容,教育模式,教育结构和教学方法的更新。1.1.2交互及交互技术教育平台的交互是在一种学习环境下,为了达到教与学或建立社会关系的目的而进行的双向或多向的交流“1。它可以分为学习者与学习内容之间的交互,学习者与教师或专家之间的交互,学习者相互的交互…。在传统的课堂教学中,是以“学习者和教师间的交互”为中心,在远程教育的初期阶段,是以“学习者和学习内容的交互”为中心的。直到计算机网络的广泛使用和协作学习,合作学习协‘8的提出,人们才逐渐开始关注“学习者相互间的交互”旧。交互三分法为分析远程教育中不同类型的交互提供了依据。此外,HillMan提出第四种类型的交互为“学习者和界面的交互””1,即学习者在学习过程中必须通过某种接入技术和学习内容交互,或者教师或其他学生确认知识时会出现的交互。在网络远程教育环境中,交互还可以分为内容和人际交互,实时与非实时交互及个体与群体交互嘲。在远程教育学习过程中,这些交互不是孤立的,而是相互交融的,共同承担教与学任务的完成。在远程教育中,学习者与教师、与学习同伴等基本处于分离状态,交流的不便成了影响远程教育发展的一个主要因素。自从远程教育出现以来,人们就开始认识了这一点。近年来,更受到人们的高度重视,交互与网络远程教育之间的关系随之也成了远程教育研究的主题。这方面的研究主要包括在技术支持下,远程教育是否能像传统面对面教育一样有效?在给定的远程教学环境下,最高效的技术或技术组合由什么因素决定?在远程教育过程中,师生间的交互活动到底有多重要?哪种形式的交互最有效?等等。文献[8]非常全面地评述了远程教育中交互的研究现状。文献争“分别从不同的角度阐述了交互在远程教育中的重要地位,高质量的交互无论是在以学生为中心还是在以教师为中心的教学中都是提升学习效果行之有效的方法,学生和教师之间的交互对于发展和改善教育是必要的嘲,交互对各类学习,学习者的满意程度及远程教育的持续发展都是十分重要的【lo]总之,交互是教育的最重要的教学要素,高水平的交互对任何教育课程的效果都会产生正面的影响。“师生之间,学生之间的交互越多,就越能促使学生通过自我发现和个人理解进行自主学习,从而达到扩张知识的效果”嘲。交互是教学过程的一个必要手段;高水平的交互,交互手段的更新成了远程教育发展的一个重要标志““”““。交互是远程教育的要素之一,在远程教育中,任何一门远程课程的学习效果都需要交互的积极参与,交互越多,学习者对课程的学习效果越好“”。对交互式学习过程支持的方法是一门正在形成的新技术“”。1.2远程教育中交互技术的现状我国现有的许多商业化远程教学平台都是采用B/S结构“。,以wⅣw为基础,将学习内容以HTML格式集中存储在WEB服务器上,供学员通过浏览器进行学习。运用了先进的计算机网络技术、多媒体通讯技术,使得地理位置上分离的学习者可以在虚拟网络空间中共享教学资源,但这种基于信息共享,个体学习,有限交互的学习模式仍没有体现出真正意义上的教学涵义“”。它存在如下弊端:1)教学内容的表现形式单一。目前大部分的网络课程都以网页形式呈现,包括文本和静态图像,POWERPOINT讲稿等形式,类似于书本和讲稿的搬家。2)缺乏多种教学策略支持。以被动学习,个体学习为主,整个学习活动在一种以个人时间表为基础的自由状态下进行,缺少群体学习,协同学习时的互动2效果。3)缺乏角色支持。学习过程中,没有角色的区分,不能发挥教学管理者和教育者(教师)的作用。4)缺乏个性化学习。学习对象被视为一个整体,很少作为互不相同的个体来对待,不能提供针对每个学习者自身的特点,提供个性化学习。5)缺乏交互能力。只提供给用户有限协作交互能力,一些提供协作学习功能的远程教学的协作主要基于传统的共享白板或BBS,缺少即时性和灵活性。6)只注重教学内容呈现,轻视学习环境设计。只注重本身功能的开发,没有考虑如何适应网络规模的发展,使其具有开放性和分布性。金伯格(Ginsburg)等人依据双向交互的程度将远程教育的计算机网络技术分成三代:第一代是网络信息资源的发布或获取技术,即单向地提供或搜索资源,包括各种资源、网站、数据库之间的超链接;第二代是网络双向异步、非实时通信,即通过计算机网络实现电子邮件、电子公告栏、网络练习和测试、计算机会议等多种技术;第三代是网络同步双向,实时通信,即通过计算机网络来实现网上交谈、网络电话会议、网络视频会议、视频点播系统以及多用户多维系统和多用户面向对象系统等多种技术。第三代远程教育的特征和优势是双向交互,即通过信息技术实现人机和人际的相互交流和交互作用,从而既可以加强师生间交流和集体教学活动,更可以大大激励和促进个体化学习和同学或小组间的协作学习。目前,国外远程教育的计算机网络技术正向第三代发展。我国的远程教育平台大部分处于第二代,基于网络课程教学的效果也并不是很理想“”。丁兴富博士在《普通高校网络远程教育面临十大挑战》“”中从定位、体制、机制、组织、成本、技术、资源、质量、模式等十个方面论述了中国网络教育面临的问题,其中技术、服务和模式等都涉及到交互方面的问题。针对目前我国高校开展现代远程教育的现状,张建伟等人通过问卷形式对网络学习和远程学习的过程、效果及其影响因素进行了系列研究㈨。这项研究结果表明,学生在对学科中基本原理的理解、学习能力和学习兴趣等方面的收获最大。但他们也遇到了很多困难,尤其是难以与教师和同学展开充分的交流互动,其原因是未能获得充分的学习支持服务。学习者普遍感到当前的远程教学中缺乏讨论交流,缺乏与老师的联系。其中有百分之八十二的远程教育学习者觉得难以进行讨论和交流。百分之七十的学生表示自己在学习中感到很孤独,希望能和同学交流。学习者要通过远程教育取得较好的学习效果绝非易事,仅仅靠把课程资源封装起来,然后通过网络等技术手段传输给学生是远远不能保证远程学习质量的。建立完善的远程教育系统、解决学习中的互动需要,是当前远程教育发展中的一个重要问题,也是中国远程教育发展中面临的一项十分紧迫的任务。1。3研究目的及主要工作1.3.1研究目的和思路利用现代信息技术,特别是计算机、多媒体和网络通信技术手段,设计并实现一种遵循以学生为中心的教学理念的交互式实时教学平台,构建一个网络环境下的理想的学习环境,为远程教育平台提供一些交互手段和工具,促进协作学习、探索学习,激发学习者的学习兴趣,达到提高远程学习效果的目的。1.3.2研究内容和结果本文研究并实现了实时交互支持系统,详细论述了各模块的功能和实现,提出了教学图形库与共享白板的集成,为教学提供了一个交互式的实时作图环境;针对语音通信中存在的语音播放不流畅现象提出了自适应声音缓冲区调整策略(AdaptiveBufferAdjustingStrategy):在远程桌面部分中,综合考虑压缩率和压缩时间,提出了一个桌面图像编解码方案。电子白板能够通过模拟现实环境中的黑板工具,提供一个虚拟共享空间,支持异地的协作者之间在各自的计算机上观看同一个内容或讨论同一问题。在传统的电子白板(如MSNMassagerWhiteboard)中,提供了作直线、圆、矩形等基本作图和属性修改等功能,但存在如下不足,难以满足远程教学的需要;第一,没有图元文件库——对教学中经常使用的可重用图形的逻辑封装。第二,图形修改功能不足。第三,组成图形的各图形元素只是一个个相互独立的个体,缺乏元素间关系的表示。针对这些问题,本文提出了基于SVG(scalablevectorgraphic,可扩展矢量图形)的网络信息实时发布模型,实现了教学图形库和共享白板的集成,并且具有良好的交互性。要想和其他用户实时地交换信息发表自己的意见和看法,用户问的语音交流是必不可少的。由于网络抖动和丢包等现象的存在,使得在接收端语音的播放会出现不流畅的现象。播放缓冲区设置的大可以有效地解决因为抖动带来的撕裂音,提高话音质量,但是播放缓冲区设置的过大却会导致延时加大。针对这个问题,本文设计了自适应声音缓冲区调整策略,大大提高了语音播放的流畅度。远程教育桌面图像使远端的学生感觉如同在老师旁边观察屏幕一样,结合桌面图像帧内各种压缩方法和桌面图像的特点,本文提出了帧间差分游程编码,并将结果使用GZip算法再次进行压缩,这种桌面图像压缩方案综合兼顾了压缩比和压缩时间的考量。41.3.3本文的组织结构论文第一章对整个研究背景、研究目的进行了介绍,概括介绍了本文主要的研究内容。第二章主要对远程教育系统中的相关技术作了研究和探讨。首先对SVG技术规范进行了介绍,然后分析了二维几何变换与矩阵表达式,这些是实现图形共享电子白板的基础。最后介绍了DireOX技术中的DirectDraw和DireetSound基本原理,这些为语音通信和远程桌面的实现作准备。第三章主要介绍了实时交互支持系统的总体设计,提出各个模块需要解决的关键问题。第四章详细论述了系统各模块的实现细节。第五章对全文工作进行了回顾和总结,并对进一步的工作进行了展望。第2章实时交互支持系统关键技术的研究2.1SVG技术简介2.1.1SVG规范概述Graphics)是国际WWW委员会(W3C)组织为适应MarkupSVG(ScalableVectorInteract上Web应用的快速发展需要而制定的一套基于XML(ExtensibleLanguage)标准的可扩展矢量图形语言描述规范。SVG标准形成的主要目的是用来描述二维矢量图形和矢量/点阵混合图形的置标语言——全称为可扩展矢量图形规范,其中可扩展(Scalable)在图形技术中指的是不局限于固定分辨率的大小,可在不同分辨率的屏幕上以相同的大小显示,也可以在同一个网页上以不同的大小显示,或观全局,或观细节;而在网络技术上,则是指这一规范能够与其他规范相融合,可以满足更广泛的用户需求,适合更广泛的应用方式;矢量(Vector)是指直线,曲线形状等几何图形如何按指令绘制的而无需逐个像素进行描述;图形(Graphics)是指它提供了对矢量,矢量/栅格混合图形的描述,填补了大多数基于XML的标记语言规范对复杂图形描述的空白L21]。W3C对SVG的解释是:SVG是一种使用XML来描述二维图形的语言。它允许3种形式的图形对象存在:矢量图形,点阵图像和文本。各种图形对象能够组合,变换,并且修改其形式,也能够定义成预处理对象。文本是XML名字空间中的有效字符,这些字符能被作为SVG图形的关键字而存留在搜索引擎中。SVG的功能包括嵌套变换,路经剪裁,透明度处理,滤镜效果以及其它扩展。同时SVG图形支持动画和交互,也支持完整的XMLDOM接口,任何一种SVG图形元素都能使用脚本来处理类似鼠标单击,双击以及键盘输入等事件,并且因为同Web标准兼容的缘故,SVG还能够在同一个Web页面里凭着继承XML的名字空间等特性来完成一系列交互操作。根据功能不同,SVG的主要对象归为基本要素对象和页面描述对象两大类僻]。2.1.2SVG的特征1.基于XML标准XML是公认的下一代网络标记语言。”。SVG的语法和结构都是基于XML而设计,它继承了XML的跨平台性和可扩展性以及作为网络开发语言的所有优6越性。首先,SVG图形完全由元素和属性等标记组成,能够描述任意复杂的图形:再者在SVG中可开发出更多的网络服务:制作智能化的数据图形,图形中的数据可以根据需要,由应用程序读取,修改和统计,最终数据信息在图形中显示,这些都是其它图形技术不可及的。2.矢量图形矢量图形是近几年流行起来的,但是矢量图形还没有一个统一的格式标准叫。这些矢量图形是计算机根据矢量数据计算后,由一系列的“计算机命令”来生成图形的,因此矢量图形是一系列几何形体,如:点,线,面等,所描绘和存储的是线条和色块信息组成,这与点阵图形(也称光栅图形)把每一点的颜色都记录下来的存储方式不同,所以才具有不失真缩放和体积小的优点,这类图像是由线框和填充构成。SVG作为一种矢量图形相对于位图图形具有特点:①文件的大小与矢量程序有关,而与图形的具体尺寸无关。②图形的尺寸可以无级缩放,变化后不影响图形的质量,所以在图形复杂度不大的情况下,矢量图形具有文件量小,可无级缩放的优点。③它可以对图形元素精确定位。④文字状态依然保留:文字在SVG图形中保留了可编辑和可搜寻的状态,没有字体的限制,用户将会看到和它们制作完全相同的画面。⑤超级颜色控制:SVG提供一个16M颜色的调板,支持ICC颜色描述文件,RGB,渐变,蒙板以及添加各种滤镜效果。值得注意的是,矢量图形描绘的只是一种中间格式的数据,无论是在网络上或是在实际的应用中,最后这个图形都必须转换成点阵图形来处理。其转换效果的好坏直接影响到矢量图形的使用,SVG在这方面有着灵活的处理手段,例如:可以设置防锯齿功能以及其它的美化效果等,这种转换的工作可以由服务器承担,也可以交给客户端去处理,当然大多数是后者,否则,SVG体积小的优点就没有了。SVG的严格定义使得图形处理人员从点阵图形到矢量图形的移植过程中,用不着担心会不会失真。再者,SVG定义的滤镜功能可以在转换后重现各种复杂的特效,这一系列优点将使矢量图形的应用越来越广泛。3.由文本构成图形SVG最明显的特征在于它是一种文本格式的图形,它可以不用任何图形处理工具,可以用记事本或写字板编写㈤,也可以方便的由程序语言动态的生成,例如:CGI,ASP,Java编程语言。SVG图形中所有的描述语句都可以直接观察到,所以也非常容易进行二次修改与更新。作为基于文本的格式,SVG图形中的文字还可以直接被网络搜索引擎所搜寻,这样可以制作自由的图像搜索引擎,从而实现对Web图形的检索。74.灵活的文件格式SVG具有可升级的特性,它的这种特点表现在多个方面,其中就包括灵活的文件格式。在以前的图形格式中,文本都作为位图而保存于图形中,图形形成以后不能单独对文本进行修改,在PNG格式中这一点有所改进,即:文本可作为一个独立的层存在。SVG灵活地扩展了图形的文件格式,它由三个部分组成:矢量图形,位图和文字。这样SVG不仅仅可以应用矢量图形和文字对象,同样还可以纳入位图,可以制作出任何其它格式图形所能达到的效果。由于文件格式是文本形式的,可以很容易在以后任何时候进行修改,而且在页面运行的过程中,也可以对很多部分做即时的修改,其中的图形描述还可以重复使用嘲。5.支持交互性SVG支持SMIL(SynchronizedMultimediaIntegrationLanguage),这使得它在图片内进行交互成为可能,这是以往的图形格式所不能做到的。SV6完全支持DOM(DocumentObjectModel)口力,利用SVG定义DOM,通过脚本语句可以很方便的做出SVG动画。大量的事件句柄,如:onmouseover、onclick,也都可以指派给任何一个SVG元素,实现对自身或对其他图片的控制。由于具有良好的兼容性,因而脚本语句能对一个页面中的HT札和SVG同时作用,实现功能强大的动态交互。6.内嵌式动态字体DHTML中可以使用用户系统中没有的字体,在用户浏览时,根据需要通过Web即时下载。这对于英文系统来说是可以理解的,因为一种英文字体的文件大小一般在几十K左右。而对于中文系统来说,这种方法便不可取,因为任何种类中文字体的文件量都在2.3M以上,用户不可能为了观看几个汉字而浪费大量的时间和精力。与DHTML(动态HTML)不同,SVG采用了一种科学的方法来解决动态字体的问题,它内嵌了图形中所出现文字的字体形状,用户不需要完全下载所有的字体文件。这对于中文用户来说是相当便利的。SVG具有其它图形格式所不具有的优势特点,下面是对它的优势特点进行的总结汹1:1和其它媒体兼容;2可升级的服务器端解决方案;3文件尺寸小,方便Web页面下载;4无限的颜色和字体的选择;5图像可任意缩放;6可以用脚本控制与客户的交互事件;7方便浏览器进行高清晰的打印;8可使用滤镜效果;9基于文本的格式,可以轻松地和其它WEB技术集成;10内建的国际语言支持,减少维护成本,轻松升级广泛的多媒体兼容性。S2.1.3SVG的应用价值SV6主要的应用范围有如下几个方面:网络发展方面的需要,与其它开放标准相兼容;数据表格,图像地图;无线设备需要;图像搜索引擎;网页设计思想的改变。SVG的应用价值前景十分广阔,这是因为首先SVG弥补了位图的缺陷,是一种与平台无关、可查询、基于文本的图形格式。SVG利用格式来定义图形的显示方式,不管对于简单还是复杂的图形,都只使用很小的文件,大大节省了存储空间。在某种意义上来说,SWF和SVG有很多相似之处,但是Flash一旦输出成SWF文档,就无法修改了,除非有原始的fla文件。虽然有一些工具可以从SWF文件中提取各种元素,但仍不能进行完全的修改。SVG与之不同,它是文本格式,只要用记事本就可以对其进行必要的修改,十分方便。其次是SVG的完全公开性,SVG是W3C组织制定的公开格式,任何公司都可以参与SVG标准的制定,从而使得标准更加科学和强大,参加标准制定的公司也愿意支持SvG格式。最后,SV6具有完善的DOM接口,使得各种语言和脚本语言可以方便的对它的每一个元素进行处理和操作。掌握了SVG语法,只使用记事本便可以读出或写出图形中的内容。2.2--维图形几何变换的算法利用显示输出图元及其属性的程序,可以生成各种图像和图形。在很多应用中,还需要改变或控制显示效果。例如,通过调整组成部分的方向和大小来实现设计和实施布局。在方向,尺寸和形状方面的变化,则是通过改变对象坐标描述的几何交换而完成。基本的几何变换有平移,旋转和缩放,经常应用于对象的其他变换还有反射和错切口町。坐标变换分两步实现。第一步,将用户坐标系的数据转换为屏幕坐标系的数据,这两个坐标系的x轴正方向一致,Y轴正方向相反,可以通过建立两个坐标的映射公式实现转换。第二步,缩放用户坐标范围至屏幕的视口范围。用户坐标系内的图形外接矩形与屏幕视口范围在x轴和Y轴方向上的缩放比例往往不同,为了保证缩放之后的图形不发生变形,必须选择较小值作为统一的缩放因子,在X轴和Y轴上进行缩放,同时调整未按原始缩放比例进行缩放的轴向的坐标值,确保图形位于视口的正中间。下面介绍使用平移、旋转和缩放参数对二维对象重定位和改变尺寸的一般过程。92.2.1平移平移是指将对象沿直线路径从一个坐标位置移到另一个坐标位置的重定位。即通过给原始坐标位置(x,y)加上平移距离f:和‘,来平移二维点,从而实现到新位置@’,),’)的移动(如图2-1)x’2X+t,Y.-Y+,。(2.1)图2-1使用平移向量,从位置P平移一个点到位置P’一P’=P+T10一对平移距离(f,,r,)称为平移向量(translationvector)或移动向量(shiftvector)。可以使用列向量表示坐标位置,并使用平移向量将平移方程(2.1)表示为单个矩阵方程:P=(羔),尸’=(三:],r=(乏](2.2)这样就可以使用矩阵形式来表示二维平移方程:(2.3)平移是一种不产生变形而移动对象的刚体变换(rigid-bodytransformation),即对象上的每个点移动相同数量的坐标。直线的平移是将平移方程(2.i)加到直线的每个端点上,并重绘制新的端点位置间的直线;多边形的平移是将平移向量加到每个顶点的坐标位置上,并按新的顶点坐标组和当前属性设置来生成新的多边形。可以使用同样的方法来平移曲线。为了改变圆或椭圆的位置,可以平移中心坐标并在新的中心位置上重画图形。通过替代定义的对象的坐标位置,然后使用平移过的坐标点来重构曲线路径,从而实现其它曲线(例如样条曲线)的平移。2.2.2旋转二维旋转是将对象沿XY平面内的圆弧路径重定位。为了实现旋转,需要指定旋转角e和对象旋转的旋转点(rotationpoint:或基准点,pivotpoint)位置(Xr,Y,)(如图2—2)。旋转角的正值定义为绕基准点逆时针旋转,负值则以顺时针方向旋转对象。这种变换也可以描述为通过基准点,围绕垂直于xY平面的旋转轴旋转。图2屯绕基准点(x,,yr)将对象旋转0角首先确定当基准点为坐标原点时,在点位置P进行旋转的变换方程。原始点和变换后点位置的角度和坐标关系如图2-3所示。其中,r是点到原点的固定距离,角母是点的原始角度位置与水平线的夹角,o是旋转角。应用标准的三角等式,可以利用角度e和Q将转换后的坐标表示为:xI=rcos(O+力=rcos妒cos0-rsin妒sinO,=rsin(O+力=rcos妒sinO+rsin妒cosO(2.4)yX图2-3相对于原点将点从位置(x,y)旋转O角到(∥,Y’)点。原点对x轴的角位移为9在极坐标系中,点的原始坐标为:x=rCOS口y2,sln伊(2.5)将表达式(2.4)代/X(2.3)中,就得到相对于原点,将位置(毛y)的点旋转O角的变换方程:z’=xcosO—ysinOY’=xsinO—ycos8(2.6)使用列向量表达式(2.2)表示坐标位置,那么旋转方程的矩阵形式为:P’=R‘P(2.7)其中,旋转矩阵为;R=瞄:期(2.8)当使用行向量式代替列向量来表示坐标位置时,将转置旋转方程(2.7)ee的矩阵乘积。变换后的行坐标向量【x’,y’】可计算为:P’qR·p)T=p1·RT其中,PT=[x,y】,矩阵R的转置aT可以通过交换行和列而得到。对于旋转矩阵,可以通过简单地改变sin项的符号而实现转置。点绕任意基准位置的旋转如图2-4所示。利用图中的三角关系,可以将方程(2.6)规范化为绕任意指定的旋转位置(xr,yr)旋转的点的变换方程:z’=x,+(X—Xr)eosO一◇一Y,)sinOY’=Y,+(x一膏,)sin0+(y—Y,)cos8(2.9)么一X图2-4相对旋转点%yr)将点从位置(x,y)旋转。角到位置(x’,Y’)类似于平移,旋转是一种不变形地移动对象的刚体变换,对象上的所有点旋转相同的角度。线段的旋转可以通过将旋转方程(2.9)用于每个线段端点,并重新绘制新端点间的线段而得到。多边形的旋转则是将每个顶点旋转指定的旋转角,并使用新的顶点来生成多边形而实现。曲线的旋转通过定位定义的点并重新绘制曲线而完成。例如圆可以通过将中心位置沿指定旋转角对着的弧移动,而绕非中心轴旋转。椭圆可通过旋转其长轴和短轴来实现绕其中心位置旋转。2.2.3缩放缩放交换改变对象的尺寸。对于多边形缩放,则可以通过将每个顶点的坐标值(x,Y)乘以缩放系数s。和s,,从而产生变换的坐标(X’,Y’):X’=X●占zY’=Y+8。(2.1o)缩放系数s。在X方向对对象缩放,而s,在y方向进行缩放。(烈誉川;)(2.11)利用方程(2.11)变换的对象既被缩放,又被重定位。当缩放系数值大于l时,则将坐标位置远离原点。可以选择一个在缩放变换后不改变位置的点(称为固定点),从而控制缩放对象的位置。固定点的坐标(x。Yf)可以选择对象的顶点之一,中点或任何其他位置(如图2—5)。这样。多边形通过缩放每个顶点到固定点的距离而相对于固定点进行缩放。对于坐标为(x,Y)的顶点,缩放后的坐标(X’,Y’)可计算为:Y.-x,+O—xf)s,y’=乃+(Y—Y,)sy(2.12)图2-5相对于所选择的固定点(x^yf)的缩放,从每个多边形顶点到固定点的距离由变换方程(2.12)进行缩放多边形的缩放可以通过将变换方程(2.12)应用于每个顶点,然后利用变换后的顶点重新生成多边形。其他对象的变换则将缩放变换方程应用到定义对象的参数上。标准位置中的椭圆通过缩放半长轴和半短轴而缩放椭圆尺寸,并且对于设定的中心坐标而重新绘制椭圆。圆的一致缩放通过简单地调整半径,然后用变换后的半径相对于中心坐标重新显示圆来实现。2.2.4矩阵表达式和齐次坐标许多图形应用涉及到几何变换的顺序。例如,动画需要将对象在运动的每个增量处进行平移和旋转。在设计和图形构造的应用中,要完成平移、旋转和缩放,从而将图形组成部分安装到合适的位置。这里考虑怎样重组上面所讨论的矩阵表达式,从而可以有效地处理这种变换顺序。从上面的论述可以看到每个基本变换都可以表示为普通矩阵形式:PI-M+P+M2(2.13)坐标位置P’和P表示为列向量,矩阵Ml是一个包含乘法系数的2·2矩阵,M。是包含平移项的两元素列矩阵。对于平移Mi是单位矩阵。对于旋转或缩放,M:包含与基准点或缩放固定点相关的平移项。为了利用这个方程产生先缩放、再旋转后平移这样的变换顺序,必须一步一步地计算变换的坐标。首先将坐标位置缩放,然后将缩放的坐标旋转,最后将旋转的坐标平移。更有效的方法是将变换组合,从而直接从初始坐标得到最后的坐标位置,这样就消除了中间坐标值的计算。因此,需要重组方程(2.13)以消除M。中与平移项相关的矩阵加法。可以通过将2*2矩阵表达式扩充为3*3矩阵,从而把二维几何变换的乘法和平移项组合成单一矩阵表示。因此,只要扩充坐标位置的矩阵表示,就可以将所有的变换方程表示为矩阵乘法。为了将任何二维变换表示为矩阵乘法,用齐次坐标(homogeneous(x,Y)。其中:coordinate)三元组(xhⅢy,h)来表示每个笛卡尔坐标位置x:互而),2鲁[i:]=㈥+[i]T(tx砧为方程(2.15)中的3*3平移矩阵。平移矩阵的逆矩阵可以用平移参数一tI和Ⅲc≮os08-sin口8淞]旋转变换操作R(0)是方程(2.17)中旋转参数为日的3*3矩阵,当使用一0替换[;:]=㈦].[i]其中,S(s。,sJ是方程(2.19)具有参数s。和S,的3*3矩阵。使用参数的倒数1/s。缩放功能相对于坐标原点进行变换,相对于其它参考点的旋转和缩放则处理成一2.3DirectX技术2.3.1概述DircctX是Microsott开发的基于Windows平台的一组API,它是为高速的实时动画渲染、交互式音乐和环境音效等高要求应用开发服务的【31l。到了W'mdows98,DirectX就是Windows家族操作系统中不可缺少的核心成员之一。W'mdows98中集成了DirectX5,W'mdows2000中集成了DirectXWindowsMe中集成了DirectX7,而WindowsXP集成了DirectX8.1。6,微软开发了DirectX标准平台,并且与硬件制造厂商和游戏厂商合作共同更新升级DirectX的标准。硬件制造商按照此标准研发制造更好的产品,游戏开发者根据这套标准开发游戏。也就是说,无论硬件是否支持某种特效,只要DitectX标准中有,游戏开发者就可以把它写到游戏中,当这个游戏在硬件上运行,如果此硬件根据DirectX标准把这个效果做到了此硬件驱动程序中,驱动程序则指导其硬件计算出结果,用户就可以欣赏到此效果。这就是“硬件设备无关性”,是DirectX真正意义所在。通常,Windows对硬件访问的管制非常严格,用通常的办法不易访问,但DkectX通过“硬件抽象层(HAL)”给予了开发人员直接访问硬件的能力,HAL不仅解决了硬件及兼容性问题,而且开发人员可以利用它直接访问计算机的某些硬件设备,例如显示设备的直接显存控制和渲染,键盘、鼠标和游戏杆的直接访问控制,音频设备的直接音频混合与输出能力等等,因此开发人员可以充分利用硬件加速将程序的性能优化到一个新的高度,如果目标机器不支持相应的硬件加速,DirectX还可以仿真加速器以提供强大的多媒体环境。DirectX家族包含的成员有Direct3D、DirectDraw、Dixcctlnput、DirectMusic、DirectPlay、DircctSound和DirectShow。2.3.2DirectDraw基本原理Directl)raw是DirectX中最基本、最有用的组件,它允许应用程序直接访问显存和显卡的一些硬件功能,从而使Windows应用程序可获得高级别的图形性能,同时维护了与GDI的兼容性和设备无关性。它最重要的特性是:直接访问显存、操纵多个显示表面、页面翻转、后备缓冲、裁剪、调色板管理和获取系统功能信息。Directl-------------Omw的体系结构是由它的接口、对象、硬件抽象层(HardwareAbstractionLayer[HAL])和硬件模拟层(HardwareEmulationLayer[HELl)定义的。DkectDraw通过基于COM的接口提供服务。这一接口的各种版本分别称为IDirectDraw、IDirectDraw2、IDirectDraw4和IDircctDraw7,程序通过DirectDrawCreate函数或通过CoCreateInstance函数可以访问DirectDraw。CoM接口是从一个称为IUnknown的基类派生的。当前定义的DirectDraw对象类型有:DireetDraw、DirectDrawSurface、DirectDrawPalette、DirectDrawClipper和DirectDrawVideoPort。在DirectX9中还定义了IDirectDrawMediaStream和IDirectDmwStreamSample接12。硬件抽象层(HAL)提供设备索引,它是特殊的设备接口,由硬件厂商提供。应用程序并非直接对HAL进行访问,而是访问由DirectDraw展现的接口。HAL完全依靠设备优化,如果硬件不支持某个功能,HAL并不会报告。另外,HAL不验证传递的参数,DireetDraw在调用HAL之前应完成这些工作。当硬件无法17支持某些功能时,DircctDraw就试图对其进行模拟,它通过硬件模拟层来实现。应用程序不直接访问HEL,给定的功能是由硬件提供还是由模拟提供的,对于应用程序是透明的。很明显,软件模拟在性能上无法与硬件相比。需要注意的是有时硬件操作与软件模拟的组合反而比用纯软件模拟更慢。DirectDraw文档中给出的例子证明了:在硬件不支持某一功能时,对这一功能的模拟操作会损失性能。需要指出,DirectDraw中的表面指的是一块存储区域。主表面是当前与用户交互的显示表面,后备表面与隔离表面(也称为屏后表面)用户不可见,用于数据缓冲。2.3.3DirectSound基本原理作为DircctX的一部分,DireetSound就是专门处理声音的。利用DirectSound应用程序接口,可以使用DkectX提供的设备无关性来绕过声音硬件的细节规范,尽可能发挥硬件的最佳性能。DircctSound提供了低延迟合成,硬件加速以及对声音设备直接存取的功能,同时又保持与当前设备驱动程序的兼容性。利用DircctSound还可以简化自己的工作。例如:在运行时对给定的硬件配置进行检测找出最佳解决方案;属性集可以利用硬件的扩展功能,即使这些硬件不直接被DircctSound所支持;提供快速反应能力的音频流的低延迟合成;开发3D音效;声音捕获等。DirectSound使用了新的模型来播放和捕获数字声音采样及合成采样源。同DkcctXAPI的其它部分一样,DirectSound会尽量使用硬件的最高性能。如果当前硬件不具备某类特性时,DircctSound会使用软件来仿真㈤。DirectSound回放建立于IDircctSoundCOM接口和另外一些处理声音缓冲和3D效果的接口基础之上,这些接口是IDireetSoundBuffer、IDirectSound3DBuffer和IDircctSound3DListcner。DirectSound声音捕获建立于IDirectSoundCaputure和IDirectSoundCaptureBufferCOM接口之上。COM接口IKsPropertySet提供了一些方法允许应用程序充分利用声音硬件的扩展能力;IDirectSoundNotify接口则用于指定当缓冲区声音的播放或捕获到达某一点时所发出的事件。以下分别介绍DirectSound体系中的各个组成部分。·回放(Playback)DircetSound缓冲区对象表征了一个缓冲区。该缓冲区包含了以脉冲编码调制(PCM)格式存储的声音数据。缓冲区对象用于声音回放的开始、停止和暂停,也可以用于设置声音的频率和格式等属性。声音缓冲区包括主缓冲区和次缓冲区两个部分。主缓冲区内含用户将要听到的音频,每一个次缓冲区都包含一段单一的声音或音频流。DirectSound会自动创建一个主缓冲区,而次缓冲区需要用户自己创建。当播放次缓冲区中的声音时,DirectSound将它们在主缓冲区中合成,然后送到输出设备。DireetSound能够合成的缓冲区的数目仅受可用的处理时间限制。DirectSotmd没有对声音文件进行格式分析的函数,所以送到次缓冲区的声音文件格式必须正确无误。一般来说,单一的应用程序的缓冲区在任何时刻都可以作为声音缓冲区使用,因为在这一时刻只有该程序访问指定的DirectSotmd设备。目前的声卡设备功能越来越强,有些声卡自带内存和波表功能,这样DirectSound就可以使用声卡上的内存、波表内存和直接内存存取DMA通道或虚拟缓存(对基于声卡的I/O端口来说)等实现声音缓冲区,以提高声音的处理速度。如果声卡不具备这些功能中的一种,DireetSound就只有用系统内存来进行软件仿真了。多个应用程序可以使用同一个声音设备创建不同的DirectSound对象。当输入焦点从一个程序转换到另一个程序时,音频输出也会自动切换。因此,程序的输入焦点改变之后,不需要停止或重新播放对应的声音缓冲区,这都由DirectSound自动管理。通过IDirectSoundNotify接口,DireetSound提供了一种对客户端的通知机制。即当由客户端指定的声音缓冲区播放到某一位置或停止播放时,DireetSound就发出通知消息。·捕获DirectSoundCaputttre对象用于查询设备的声音捕获能力,并且由声音输入源为音频捕获创建缓冲区。音频捕获函数在Wm32API中就有,如Waveln。DirectX5中的DireetSoundCapture相对于Waveln来说性能并没有提高。不过DirectSoundCapmre应用程序接口允许程序员在音频回放和捕获中使用一致的接口来创建标题(Title),也允许目前开发的标题用于将来新的增强的驱动程序模型和应用程序接口。DireetSoundCapture还允许捕获压缩格式的音频,但它本身并不调用压缩管理函数。DireetSoundCaptureBuffer对象表征了用于从输入设备捕获数据的缓冲区。该缓冲区是循环的。也就是说,当输入指针到达缓冲区的结尾时,它就回到缓冲区开头再重新开始。DireetSotmdCaptureBuffer对象的方法允许用户获取缓冲区的属性、开始和停止音频的捕获,以及锁定内存的一部分,这样就可以从缓冲区安全地读出数据。同播放音频一样,DireetSound允许在捕获音频数据到达缓冲区的某一位置或捕获停止时请求通知,该通知服务也由IDirectSoundnotify接口提供。19·硬件抽象层和硬件仿真层DirectSound是通过硬件抽象层HAL(hardware.abstractionlayer)来访问音频设备的,这里的HAL是由音频设备驱动程序提供的接口。DirectSound硬件抽象层提供了以下的功能:1.取得和释放对音频硬件的控制。2.描述音频硬件的性能。3.当音频硬件可用时,执行指定的操作。4.当音频硬件不可用时,如果有操作请求就报告出失败信息。设备驱动程序不能执行任何软件仿真,它只是将硬件的性能汇报给DircctSound并将DirectSound的请求传送给硬件。如果硬件不能执行请求的操作,设备驱动程序就报告请求失败,并由DirectSound仿真这一操作。只要系统安装了DirectX驱动程序,就可以使用DirectSound。如果没有安装同音频硬件相对应的DirectSound驱动程序,DirectSound将使用自身的硬件仿真层HEL(hardware—emulationlayer)。HEL包含了W'mdows多媒体波形音频函数WaveIn和WaveOut。通过硬件仿真可以使用DirectSound的大部分特性,但显然失去了硬件加速功能。DirectSound会自动利用音频硬件的加速功能,包括硬件合成,硬件声音缓冲内存等,而不需要专门指定使用硬件加速。不过为了最佳利用硬件资源,用户可以在程序运行时查询DireetSound以取得对音频设备性能的全面描述,然后对给定的特性使用不同的方式优化。当然,用户也可以显示地指定由哪个声音缓冲区获得硬件加速。●系统组成DirectSound应用程序是一个完整的Win32程序,图2.6给出了DirectSound与系统其它音频部分之间的关系。wI.'32应用程序I碰件仿真层F习声『Ⅵhda¨膏糊DoIl爱件抽簟屡I声耆爱件I图2-6DirectSound与系统其它音频部分间的关系与标准的grmdows波形音频函数相比,DirectSound提供了另一个访问音频设备的路径。同一时间只能通过一个路径访问一个音频设备。如果波形音频驱动程序分配了音频设备,就不能再将DirectSound分配给该设备。同样,如果已经将DirectSound驱动程序分配给音频设备,再试图用波形音频驱动程序分配给该设备也会出错。但是,如果系统安装了两个音频设备,程序就可以同时使用DirectSound和波形音频函数分别访问这两个设备,而且互不干扰。目前MicrosoftVideoforWindows播放AVI文件使用的是波形音频函数。因此,如果使用DireetSound来播放AVI文件,可能就听不到声音。同样,如果在播放AVI文件时创建DirectSound对象,也不会成功。因此,在播放AVI文件之前,可以调用IDireetSound::Release方法释放DirectSound对象,播放完毕后再重新创建和初始化DirectSound对象和DirectSoundBuffer对象。2l第3章实时交互支持系统的设计3.1方案的提出实时交互支持系统可以作为一种通讯工具,方便异地师生间的交流,为教学双方的交流、为教学目的的实现提供最大限度的服务和保障。使学习者学得更加主动、更加方便、更有效率。3.2实时交互支持系统的需求分析(1)充分考虑系统的可扩展性和可重用性,根据需求构建基于远程教育系统的基本元件库。(2)提供对矢量图形的拾取功能,使用户能够用鼠标方便地选取待编辑图元。(3)提供良好的交互操作,实现对图元的旋转、平移、缩放、添加、删除等功能。(4)系统应保证操作信息的同步,确保在多人参与的多个用户端同步显示,实现异地浏览和讨论。(5)能够将文件保存为系统自定义格式,以便用户随时打开查阅。(6)提供网络通话功能,进行多人语音通信。(7)在学生机上重现教师机屏幕的显示内容,实现远程桌面功能。3.3实时交互支持系统的解决方案系统将基于.NET平台进行架构实现,部分功能需要直接对内存进行管理,而.NET内部的CLR负责了管理对象内存、类型验证和垃圾回收的工作,操作地址指针不直接,所以系统采用了VC++进行COM的开发来完成复杂的内存操作和算法。3.3.1.NET框架简介.NET框架是一种新的计算平台,它简化了在高度分布式Intemet环境中的应用程序开发,其特点表现为:◆基于网络的应用服务,通过XML语言定义了简单对象访问协议(SOAP)、Web服务描述语言(WSDL)、Web服务发现协议(DISCO),使软件开发、维护和升级都将完全在互联网上进行,也使多种网络设备的访问变为可能。◆面向对象的多语言平台,基于公共语言运行时CLR(CommonLanguageRuntime)和类库的紧密结合,提供了强大的跨语言继承性、异常处理和调试功能,使不同系统和平台之间的交互和综合变得十分容易。◆自动化的内存管理,垃圾回收器自动跟踪应用程序内存的分配、使用和释放,不必再编写执行内存管理任务的代码,解决以往常见的因内存访问而导致的错误。◆安全的代码执行环境和版本控制,运行时环境的元数据包含了与其它模块相关联的所有信息,并强制执行安全性,避免了对注册表的操作,同时保证了版本的可靠性。◆支持与COM的互操作,通过生成代理和其它技术,既可以在.NET工程中使用COM组件,也可以在其它应用程序中使用.NET组件。◆按照工业标准生成所有通信,以确保基于.NET框架的代码可与任何其它代码集成。.NET框架包含两个主要组件油1:公共语言运行库和.NET框架类库。公共运行库提供核心服务(如内存管理、线程管理和远程处理),并且强制实施严格的类型安全以及可确保安全性和可靠性的其它形式的代码准确性。.NET类库是一个综合性的面向对象的可重用类型集合,利用它可以开发包含从传统的命令行或图形用户界面(GUI)应用程序到基于ASP.NET所提供的最新应用程序(如Web窗体和XMLWebServices)在内的应用程序。.NET框架结构层次如图3.1图3-1.NET框架1.1c群语言是微软公司专门为.NET运行时高度兼容设计的简单的、现代的、面向对象的和类型安全的编程语言,它综合了VisualBasic的高效率和c++功能的强大性及其熟悉的语法。与VB相比,它的代码可以实现与其它语言的交互,可以使用.NET提供的丰富的基类,语法也更为简洁。与vc++相比,它执行的效率更高,放弃了容易出错的指针和指针算法(不安全代码除外),使用完全面向对象的编程和W'mdowsForms快速开发图形化的用户界面。同时基于.NET平台的强大功能,C群可以实现与其它语言的无缝集成。3.3.2COM技术概述COM(组件对象模型ComponentObjectModel)组件技术是为实现面向对象化编程而产生的。软件的组件化设计使大型的应用程序能够分为若干个相对独立的组件来分别进行开发、编译、调试和测试,然后通过相互之间的接口组成实际需要的应用系统,这样就可以通过协作缩短开发周期,同时也便于进行系统的维护和升级。不难看出,在实现组件化设计的过程中,要保证系统在组合后能够有效地运行,接口就成为最关键的技术。COM就是基于W抽dow¥平台的广泛使用的组件接口标准之一。应用COM组件,就可以选择不同的开发语言来完成不同的工作,然后再进行集成,只要这些语言都支持标准的COM协议。谈到COM,首先有三个概念:接口、实现以及类。接口是包含了一组函数的数据结构,通过这组数据结构,客户代码可以调用组件对象的功能。接口定义了一组成员函数,这组成员函数是组件对象暴露出来的所有信息,客户程序利用这些函数获得组件对象的服务。实现就是接口中定义的成员函数方法的实现。COM中的类实际上是指类厂(IClassFactory),它如同C++中类的定义,C++通过一个new生成一个类对象。在COM组件程序中,为了保证生成的COM对象实例这一机制是语言无关的,建立了IClassFactory。通过IClassFactory的成员函数CreatelnstanceO生成了COM对象实例。接口类只表述了实现者希望客户知道的底层数据类型模型的面貌,只包含对象的每个操作的方法声明。接口和实现在COM中是这样定义的:接口类定义成抽象基类,也就是纯虚函数方法的集合,对应的c++实现类是从接口类中派生,并且重载每个纯虚函数以及实现这些函数。COM实现了二进制组件标准的核心原因就是COM把接口和实现分开。客户在编译过程中需要精确的接口定义,对接口定义的变化就需要编译器重新编译,以便适应这种变化。3.4实时交互支持系统功能模块的划分根据上述分析的系统功能,将整个实时交互支持系统分为界面与通讯控制模块、电子白板模块(该模块包含数据预处理子模块与图形绘制和交互子模块)、语音通信模块和远程桌面模块,总体结构如图3.2所示:圈库文件哭叫X旦卫厅吊j嚣j图形数据预处理子模块语音通信模块远程桌面模块田形绘制与交互子模块}电子白板模块界面与通讯控制模块1用户Internet图3-2系统总体结构3.4.1界面与通讯控制模块该模块负责多点之间的数据和信息交互,它的主要任务包括下载同步图形操作信息、上传本地图形操作信息、语音的采集和发送、语音的接收和回放、图像的发送和接收,以及用户与系统主界面的交互等等。为使任务能够并发执行,必须采用多线程的编程技术,为每个任务建立一个线程。WindowsSocketsAPI是TCPIIP网络环境里,也是Intemet上进行开发最为通用的API。在TCP/IP网络通信环境下,Socket数据传输是一种特殊的I/0,它也相当于一种文件描述符,具有一个类似于打开文件的函数调用——socke“)。Socket实际上是一个通信端点,通过它,用户的Socket程序可以通过网络和其他的Socket应用程序通信。本系统网络通信信道分为两大类:控制信道和数据信道。控制信道用来传送身份验证、服务请求和应答等控制信息,使用面向连接协议的SOCKET编程模型,每个节点建立一个连接用于控制信道。数据信道用来传送窗体白板图形、桌面图像和语音数据,其中窗体白板图形和桌面图像对准确性要求比较高,使用面向连接协议的SOCKET编程模型;对于语音传输,由于实时性要求高,使用无连接协议的SOCKET编程模型。数据信道中每种服务各建立一个连接。控制信道的命令交互如下:首先学生端与教师端建立一个TCP连接用于命令消息的传输,然后学生端发送Join报文,它附带用户名和密码两个参数。教师端验证该用户,如果允许该学生加入则发送Accpet报文;如果不允许则发送Refuse报文,并且带上拒绝原因。无论是教师希望某学生退出,还是学生主动要求退出都向对方发送Quit报文,并且指出需要退出节点的用户名,然后断开TCP连接。如果学生端希望请求服务则发出Request报文,服务类型有电子白板服务、语音服务和远程桌面服务。教师端如果同意该服务则发出Response报文,并且给出一个端口号和该端口号上采用的传输层协议类型,可能是TCP协议或者UDP协议,学生端一旦收到该报文就主动连接到该报文所指定的端口号上,同时启动相应的服务模块;如果不同意则教师端不需要给出任何应答。如果学生端要求停止某项服务则发送SIop报文,参数是需要停止的服务名,无论教师端是否收到该报文,学生端都会终止该服务。3.4.2电子白板模块3.4.2.1数据预处理予模块数据预处理子模块的主要工作包括自定义图库文件的读取,并将图库内容分类显示在左侧的模具面板内,为绘图做准备。随着时间的推移,用户可以根据需要扩展图库,使用图库能大大加快图形绘制速度,提高绘制质量,方便修改。自定义图库文件由若干模具文件构成,每个模具文件包含若干图元信息。文件定义语言采用XML语言,保证了系统图库的可扩展性需求。图形信息的描述是一个重点,既要满足大部分绘图功能的需要,又要为矢量图形传输的信息交换做准备。3.4.2.2图形绘制与交互子模块该模块是系统图形部分的核心模块,绘图的显示和所有的交互功能如平移、旋转、缩放等都是在该模块中实现的。本系统将图形元素划分为三个大类,分别是结构图元、连接线图元和标注文本图元,将每个图形元素类作为一个独立的对象来管理。实体的拾取是所有交互操作实现的基础,本系统中先使用元素的包围盒进行粗判,如果拾取点在包围盒内再计算拾取点到图元的距离,如果这个距离在给定的范围内,则图元被拾取,否则拾取失败。由于要求教师端和所有学生端节点间保持白板场景的一致性,所以需要一种机制实现通过网络传输对白板上所有矢量图形的编辑操作。通常会有两种做法,一种是将对于每一个图形修改后的点坐标发送给对方,由对方重新绘制。另一种做法是对于每一个图形,只在最开始给出他的起始坐标,随后对这个图形的修改都只传输相应变换矩阵,由对方根据原始坐标和变换矩阵计算这个图形的实际坐标,进行绘制。由于前一种做法对于点数量较多的图形来说,需要传输的数据量很大,所以本文采用了后一种方法。每个实体维护一个变换矩阵,以记录对该图元实例所有二维几何变换操作的累加。在使用共享电子白板过程中,可能会发生同时有几个用户对同一图形要求编辑,这样就可能会发生冲突。考虑下面这种情况:A节点希望删除某图元,同时B节点希望移动该图元,实际情况应该是要么该图形都被删除,要么该图形都被移动,因此要指定一个节点进行裁决。在本模块中,总是由教师端进行裁决的。具体做法是各学生端把操作信息发给教师端,在教师端把收到的消息放迸一个消息队列,先到先服务,然后把裁决结果发给所有节点。在上面这种情况下,假设A发出的删除消息先到达,则裁决的结果是删除该图元。3.4.3语音通信模块能够和其他用户实时地交换信息发表自己的意见和看法,用户语音信息的交流是不可缺少的。语音通信模块为参加讨论组的多用户提供了语音流畅的实时交互式工具。多人语音通信的解决方案有两种实现方法。现假设参与多人语音通信有四个节点,分别是A,B,C,D。第一种方案(如图3.3)每个节点都要将自己的语音数据广播给其他所有节点,这样每个节点都会收到其他三个人的语音数据,然后再将这三路语音数据在本地混音后放入播放缓存,就可以得到最后的效果。使用这种方法,最后的网络负荷和节点数量的关系是O(n2)。图3-3第一种方案第二种方案(如图3-4)是B、C、D这三个节点将自己的语音数据发送给A,统一由A负责将这三路语音数据以及A自己的语音数据分别作混音,然后将结果分别发送回给B、C、D。使用这种方法,最后的网络负荷和节点数量的关系是O(n)。可以看出,使用第二种方法的优点是:在参与讨论的节点数较多的情况下比第一种方法有效的节省了网络的带宽。但是缺点是:由于B、C、D听到的其它人的声音需要到节点A做中转,因此延时与前一种方案相比较长。图3-4第二种方案在该系统中,由于单向的延时可以控制在150毫秒之内,双向的延时可以控制不超过300毫秒(关于延时的时间特性,在系统实现部分将进行详细的分析),在多人语音通信的过程中,正常情况下这样的延时是可以接受的,因此该系统采用了第二种方案。根据系统的要求,语音通信模块分为教师端和连接端两种身份。教师端对来自网上的语音数据帧解压缩,并进行对不同数据源的语音数据的混音操作,再把混音后的语音数据帧发送到网上。连接端从声卡中采集语音数据,经过压缩再把语音数据帧发送到网上;并且对来自教师端的语音数据帧解压缩,填入播放缓存。本系统使用DirectSound实现声音的捕获和回放。当两台电脑的时钟有误差或者网络发生丢包现象,都会导致两台电脑上生成语音数据的速度和消耗语音数据的速度不一致,因此缓冲区需要经常地调整以适应这种速度上的不一致。为了减少语音数据所占用的网络带宽,本模块在发送语音数据前使用G729标准进行压缩。G729标准的特点是对语音数据的压缩性能比较好,且码率较低,压缩后的码率大约为8kbps。3.4.4远程桌面模块远程桌面模块是以屏幕共享为目的,在学生机上重现教师机屏幕的显示内容。一帧完整的桌面图像在当前的计算机网络条件下如果不经过压缩,数据量之大是难以想象的,况且要不断地重复此操作。由于屏幕捕捉的大部分都是Windows的窗体图像,对于这类图像采用Lz系列的字典压缩算法压缩比较理想,而且画面没有损失。本系统将采用Lz系列的GZip算法。经实验证明,一幅完整的桌面图像经GZip算法压缩大概需耗时300ms,压缩时间不理想。对于远程桌面这种动态图像基本上是由面积较大的像块组成。虽然每个像块的幅值各不相同,但像块内的幅度是相近的或相同的,幅值跃变部分相应于像块的轮廓只占整幅图像的很小一部分。帧间相同的概率更大。这意味着前后像素之差或前后帧间相应位置像素之差为零或差值小的概率大,差值大的概率小。基于这种想法,本系统给出桌面图像帧间编码方法一差分游程编解码,减少了帧间的冗余度。将第一次差分游程编码结果再经过GZip算法压缩,压缩时间在十几毫秒,大大减少了压缩时间。另外在网络传输中,如果丢失了或错误传输了单个的包,后续各帧都会受到影响,所以还应定期传输关键帧。3.5本章小结在前一章中,已经针对在线实时交互中的相关技术进行了研究和探讨。本章设计了实时交互支持系统总体框架,分析了各模块需解决的问题并提出解决方案。第4章实时交互支持系统的实现4.1界面与通讯控制模块4.1.1概述界面与通讯控制模块简称通讯模块,负责多点之间的数据和信息交互,它的主要任务包括:●加入实时交互支持系统的学生身份验证。●服务连接的请求和应答。·用自定义格式从教师端下载显示数据以及同步图形操作消息,从而确保参加同一实时交互支持系统的所有用户看到场景的一致性。●语音数据的通讯。●远程桌面的数据通讯。4.1.2工作线程整个系统可能同时需要处理的任务包括上传本地图形操作信息、下载同步图形操作信息、语音的采集和发送、语音的接收和回放、图像的发送和接收等等,以及用户与系统主界面的交互。在这一系列复杂的操作中,各种信号都需要得到及时服务,否则就会产生中断。此时,就需要使用多线程的编程技术来实现这种并行操作,为每一个任务启动一个线程,来解决多任务的并行处理问题。4.1.3控制通道报文格式定义Action=”Join。E习二正User=用户名PWD=密码●学生加入实时交互支持系统讨论组的请求:●同意学生加入实时交互支持系统讨论组的应答:30i竺::l竺lAction='Accept"User=用户名●拒绝学生加入实时交互支持系统讨论组的应答:巨丑三丑Action=”Refuse”Reason=拒绝原因·服务请求:Action=”Request”User=用户名Service="Voice”/”RemoteDesktop”/"WhiteBoard”●服务应答:Action=”Response”User=用户名Pon=服务的端口号Protocol=”TCP。/”UDP”Action=”Stop”巨习三三●停止服务:User=用户名Service="Voice”/“RemoteDesktop”/”WhiteBoard’’3lAction=”Quit"巨正User=用户名·退出实时交互支持系统讨论组:4.2电子白板模块4.2.1数据预处理子模块数据预处理子模块的主要工作包括根据系统定义的矢量图形描述语法,对自定义图库文件进行解析,并将图库内容分类显示在界面左侧的模具面板内,为绘图做准备。4.2.1.1矢量图库描述语法的定义图库是一种自定格式的文件,它打开多个模具,模具中包含创建图元所需的信息即图元信息。图元信息是网络可视化发布的一个重要部分。经过分析,一个完备的图元描述应该满足以下几项要求㈨:1.能够充分地表达图元的几何形状;2.能够方便地定义图元的应用属性,且易于扩充;3.能够方便地定义图元与外界的交互功能;4.能够对图元的几何形状和应用属性进行存取和显示;为达到上述要求,描述一个图元应该包括三个部分的信息(如图4.1):几何形状,应用属性和交互。几何形状是基本图形的描述,又应包含图形类型,坐标位置和坐标单位。应用属性应该包含属性名和属性值。交互是为实现对图元的编辑操作。图4.1图元信息系统中绘制的复杂图形都有一定的组成结构,因此复杂图形可被分解成若干简单图形,如一条直线,一段弧,一个矩形等等,本文称之为基本结构图元。将由若干基本结构图元组成的复杂图形称为组合结构图元。在绘图中组合结构图元被视为一个整体,可在绘图时直接使用㈨。4.2.1.2基本结构图元结合大部分教学所使用的图形特征,如数字逻辑课程中经常使用的逻辑电路等图形的特征,本系统提出了9种基本结构图元如下:这9种基本结构图元分别对应9个标签元素,由这9种标签元素根据需要经过变换、组合,即可用来定义组合结构图元,满足教学中大部分的复杂绘图需求。SVG作为一种基于XML的语言规范,也具有XML的可扩展性,可以在SVG文件中引入其它置标语言的命名空间。这些特性使得SVG在互联网上得到广泛的应用嘲。表4.1扩展定义了这9个标签元素名称直线定义说明乱inepl=…p29”,>p1,p2分别代表直线的起始点和终止点。p1,p2的值是已定义的点或关键点的索引值。三角形<Trianglep1.’”’p2_’”’p3=…序p1,p2,p3分别代表三角形的三个顶点。pld)2,p3的值是己定义的点或关键点的索引值。填充三角形<FTriangle,>pl=””1,2_’’”p3_"”p1,p2,p3分别代表填充三角形的三个顶点apl,p2,p3的值是己定义的点或关键点的索引值。多边形<polygonp1。’…p2=…p3-’’p1-””p2=…‘p3-’’……代表可以指定若干个顶点,使用这一组指定的点来绘制多边形。……代表可以指定若干个顶“p4-竹“……卢填充多边形<FPolygon“p4--一“……卢点,使用这一组指定的点来绘制填充多边形。基数样条<Curvepl-’一p2_"“p3-”“p4-’’……代表可以指定若干个点,使用这一组指定的点来绘制基数养条曲线。……代表可以指定若干个点,使用这一组指定的点来绘制填充闭合图形。“……归填充闭合样条<FClosedCurvep1-,’“p2一’“p39“p49“……卢圆弧<Arcpl=~1,2=”“p3一,’‘恰p1-’“p2-’“‘p3I竹“p4-,’‘伦表4-I9种基本结构图元标签p1代表圆心,p2代表起始点,p3代表终止点。填充椭圆(圆)<FEllipsepl,p2,p3—四个点确定一个椭圆或圆。4.2.1.3组合结构图元如前所述,本系统设计了9种基本结构图元,而复杂图形都是这些基本结构图元的组合。因此,组合结构图元的几何形状定义部分一般由若干简单图元子元素组合而成,而给组合结构图元设置的样式风格等特性将会应用到它所包含的所有基本结构图元子元素当中。下面以一个具体的图形为例(如图4—2),来详细说明组合结构图元在图库文件中的描述方式。r\y图4-2一个组合结构图元图4.2表示的组合结构图元在图库中的描述如下:Width和Height标签指定了组合结构图元原始的宽和高。接下来的一组Point标签定义了该组合结构图元的若干子元素(基本结构图元)绘制所需的点坐标。这些坐标都是用户坐标系中的原始坐标。如果某组合结构图元(例如箭头)的形状允用户改变,则在描述中还应该加入KeyPoint(关键点)标签。一个组合结构图元可以包含若干个关键点。关键点决定图形的形状,因为其它非关键点的坐标可以参照关键点的坐标计算得出,所以修改关键点的坐标可以在一定程度上改变图形形状。图4.3举例说明了关键点对图形形状的决定作用。图牟3关键点决定图元形状图中点1为关键点,鼠标拖拽点1则箭头图元的形状所示由图4.3的左侧变为右侧。拖拽前后,各点与关键点保持以下关系不变:点2、4、5的横坐标与关键点点1的横坐标相等,点7的纵坐标与点1的纵坐标相等,点6的纵坐标与点1纵坐标互为相反数。Point标签的横坐标和纵坐标可以是关于关键点的横、纵坐标的表达式,也可以独立给定。Mat标签定义该组合结构图元实例的变换矩阵,变换矩阵用来按顺序记录图元实例的所有变换操作,后文将作出详细说明。最后是如前所述的各种基本结构图元标签部分。在图元信息描述中还可以加入说明标注,这是由Text标签支持的。定义如表4.2:名称标注定义<Text说明conten卢””p1."“p2-”content属性是标注文本内容。p1,p2属性确定标注的显示位置。“ali掣19‘修a14皿属性确定文本的对齐方式。表4-2标注说明文字图元标签完整的矢量图库描述语法参见附录2。4.2.1.4图库的信息层次结构综上所述,图库的信息层次结构表示概括如图4-4■性图4-4图库信息层次结构4.2.2图形绘制与交互子模块该子模块是系统图形白板部分的核心模块,绘图的显示和所有的交互功能如平移、旋转、缩放、添加、删除等都是在该模块中实现的。交互功能的实现是关键中的关键,它直接影响到系统的可操作性。在本系统中,大部分的交互由鼠标消息驱动实现。在这种方式下,用户操作首先转化为系统内部事件,然后通知专门处理交互操作的子模块对场景响应处理。4.2.2.1模块层次结构本系统将图形绘制与交互子模块分为基本图元及辅助函数层和绘制与交互层两个层次来创建,模块层次结构如图4.5绘制与交互层』基本圈元爱辅助函敦层』C,DI+田形库图4-5模块层次结构交互层是用户和场景中各元素进行通信的桥梁。它直接接收用户鼠标、键盘发出的各种操作指令,并根据用户的要求改变场景中相应实例元素的属性值,从而为各图元按照用户的要求产生平移、旋转和缩放等动作做数据上的准备。基本图元及辅助函数层是直接调用GDI+库函数服务的层。它的主要功能是基本结构图元的绘制,定义矩阵及矩阵运算,为坐标变换、变换矩阵做准备。4.2.2.2图元绘制类面向对象的程序设计是目前程序设计的主流方法。该模块利用面向对象的程序设计和组织方法建立起一个矢量图形系统的图形元素类。该矢量图形系统能够处理直线、多边形及多边形区域、圆及圆形区域、圆弧等基本图形以及由它们组合而成的复杂图形和连接线、标注文本等图形元素。图形元素的编辑操作包括图元的拾取、平移、旋转、缩放、添加、删除等等。针对每类图形元素的共同点及其特点,可以将上述图形元素划分为三个大类,分别是结构图元、连接线图元和标注文本图元,将每个图形元素类作为一个独立的对象来管理。对各类图形元素进行分析,可以发现各类图形元素都具备一些相同的属性和操作功能,如图形元素的ID、颜色、线形、线宽和标志一个图形元素是否被当前用户所选中等属性;图形元素的拾取、平移、旋转、缩放和绘制等操作。把这些图形元素中的共性(属性和操作)组织存放在一个图形元素基类中,具体的图形元素类从这个基类派生…1。根据系统要求并结合各图形元素类之间相互关联的属性和行为特征,将所有图形元素以类的分层结构的形式表示成UML图(如图4-6)。采用这种图形元素类的分层表示方式可以简单明了的表示各图形元素类之间的继承和派生关系,从而使系统组织清晰,结构简单,易于编程实现。图4.6图形元素类的UML图●结构图元(CStructGE)(包括组合结构图元和基本结构图元)在4.1节已经论述。●连接线图元(CConnectLineGE):并非每个图元都是各自独立的,例如在制作流程图、组织表时,这些图元之间一定是有关联的。连接线图元就是为了表示这种关系而设计的。当对连接线一端的图元进行操作时,连接线也会相应地做调整,但是不论图元如何移动,建立关联的点都不会改变。连接线图元数据结构的关键成员是一组点,绘制连接线时,每按下鼠标左键一次便向该连接线的定义增加了一个组成元素。其中起始点(start)和终止点(end)这两个端点保存该连接线图元所连接的结构图元的索引。●标注文本图元(CCommentGE):与组合结构图元中的text标签功能类似,标注文本图元是用来在页面适当的地方作标注,用以说明图表中的意义或备注事项。与te)c【标签不同的是,作为一个单独的图形元素类,标注文本图元实例中的文本可以进行删除、修改、缩放和移动等操作,而te埘标签中的文本在制作进图元库后就不允许编辑了。4.2.2.3交互式图形实现的主要功能·在界面的模具面板选取内建图形,在工作白板上的目标位置点击左键即可创建该图形的实例。·如需要建立结构图元的关联性,可创建连接线。绘制连接线的起始点和终止点(即连接线与被连接图元的交点)时,会自动与被连接图元中距离点击处最近的点建立关联性。不论图元如何移动,建立关联的点都不会变更,以维持图元间的关联状态。·可在界面任意位置加标注说明性文字。●●●设定图元的颜色,能立即在视觉上产生不同的感受,使其更具变化性。设定线条的样式。调整连接线、结构图元、标注文字图元。当选中某图元后,在图元周围会出现小圆点,当鼠标移到上面时会改变形状以提示用户。拖拽这些小圆点,用户可以改变图元的尺寸,调整图元的角度和位置。●删除图元、连接线、注释文字。4。2.2.4事件处理过程和状态跳转控制用户消息事件驱动,即操作系统将用户操作转化为操作系统消息事件,系统主框架将该消息事件转化为系统内部事件,如平移、旋转、缩放,然后按照用户要求对选中图元的属性参数进行修改,并重画场景从而完成更新操作。用户触发的外部事件包括单击鼠标(Click)、双击鼠标(Double.Click)、鼠标移动(MouseMove)、鼠标拖拽(Drag)、按下鼠标E_/右键(MouseDown)、按下删除键(keyDown)等等。场景所处的状态不同,则用户触发的事件将产生不同的效果。通过分析本系统图形交互部分实现的主要功能,总结并定义出窗体白板具有以下几个主要的状态(如表4—3)和状态转换(如图4-7)窗体白板的主要状态如表4.3:状态名IdleNewSelect解释初始状态绘制图元状态图元选中状态关键点选中状态缩放点选中状态平移点选中状态KeyPoimScaleMoveRotateConLineS旋转点选中状态选中绘制连接线功能状态ConlineMidConlineMoreCommentSCommentEditCommentMoveCommentScale绘制连接线中间若干点状态连接线中间点选中状态选中绘制标注文本状态标注文本编辑状态标注文本移动状态标注文本缩放状态表4.3主要状态名称很多实时系统,特别是实时控制系统,其整个分析机制与系统的状态有相当大的关系。有限状态机由有限的状态和相互之间的转移构成,在任何时候只能处于给定数目的状态中的一个。当接收到一个输入事件时,状态机产生一个输出,同时也可能伴随着状态的转移。在本系统中,采用状态机描述窗体白板状态的转变对理解系统和程序实现具有很大的帮助。图4.7使用状态转移图建立有限状态机。图4-7主要状态转换4.2.2.5拾取算法图形的拾取是图形编辑的基础,图形拾取是指在图形场景中通过某些策略搜寻到所选择的几何元素。拾取效率直接关系到交互操作的快慢,尤其是生成一个复杂图形场景时,拾取效率显得尤为重要;另外拾取的准确度及可靠性同样影响系统操作的可靠性及效率。本系统采用如下方法拾取元素∞儿嬲1:1.每个图形元素都有它的包围盒(box),图形元素一定落在它的包围盒内。在粗判时,从拾取点与包围盒的关系可以剔除掉不可能的元素。假如想要判定一条直线是否被拾取,如果已确定拾取点在该直线的包围盒之外,那么可以直接判定该直线没有被选中。2.如果拾取点在元素的包围盒内,那么必须进一步精确判断是否选中该元素。3.计算拾取点到图元的距离。如果这个距离在给定的范围内,则图元被拾取,否则拾取失败。图元包围盒的计算是对图形元素进行拾取的关键步骤之一。下面分别介绍各基本结构图元包围盒的计算:_直线的包围盒:包围盒矩形左下角坐标:m—box—leftbottom.x=min(start.X,end.x);m—box—leftbottom.y=min(start.y,end.y):包围盒矩形右上角坐标:m_box_rightup.x=max(start.x,end.x):m_box_rightup.y=max(start.y,end.y):(4-3)●多边形的包围盒:包围盒矩形左下角坐标:m—box—leftbottom.x=min(vertexl.x,vertex2…x…..vertexn.x):m—box—leftbottom.y=min(vertexl.y,vertex2.y,……vertexn.y):包围盒矩形右上角坐标:mboxmdghtup.x=max(vertexl.x,vertex2.x,.….vertexn.x);box.rightup.y=max(vertexl.y,vertex2.yI……vertexn.y):(4-4)一圆弧的包围盒:圆弧的包围盒的计算相对比较复杂。主要决定于圆弧的起始点和终止点,以及与通过圆心的四个坐标轴的交点。主要工作是首先计算出与四个坐标轴的交点(posItiveX_intersection,positNeYjntersection,negativeX_intersection,negative、rjntersection)。然后,再计算圆弧的起点和终点,以及各交点中的最大值和最小值。包围盒矩形左下角坐标:m—box—leftbottom.x=min(negativeX_intersection。start.x,end.X);m—box—leftbottom.y=min(negativeY_intersection,start.yIend.y):包围盒矩形右上角坐标:mbox_rightup.x=max(positiveXintersection。start.x,end.x):(4—5)m_box_rightup.y=max(positiveYintersection,start.y,end.y)一样条曲线的包围盒:样条曲线包围盒计算方法同多边形,计算公式(4—4)中的顶点换成指定坐标点。包围盒矩形左下角坐标:m—box—leftbottom.x=min(coordinatel.x,coordinate2.x,..….coordinaten.x):m—box—leffboffom.y=min(coordinatel.y,coordinate2.yI……coordinaten.y);包围盒矩形右上角坐标:mbox_rightup.x=max(coordinatel.x,coordinate2.x,….coordinaten.x);4tm_box_rightup.y=max(coordinatel.y,coordinate2.yI……coordinaten.y):(4—6)以下是本系统定义的基本结构图元的拾取算法,组合结构图元依次执行以下算法的组合。●直线的拾取算法:相对而言,直线的拾取比较简单,其算法如下:1.做一个包容此直线的包围盒,判断拾取点是否在包围盒内。2.如果不在包围盒内,则拾取失败。如果在包围盒内,计算拾取点到直线的距离。该距离的近似算法可采用下面的公式计算(参照图4,8)DIST=fabs(X|cosA+Y’sinA—n式中:XY是拾取点与直线段的起点坐标差,A为直线段与x轴正向的夹角,P为拾取点与直线段的起点之间的距离。当DIST的值在给定误差RANGE范围内,则此直线段被拾取到;否则拾取失败。Y—。。∥、.|,:tx一么:=一<≤、i一X图4-8DIST计算●多边形的拾取算法:1.做一个包容此多边形的包围盒,判断拾取点是否在包围盒内。2.如果不在包围盒内,则拾取失败。如果在包围盒内,计算拾取点到多边形的各条边界的直线段的距离。该距离有多种近似算法,可以使用上面介绍的拾取直线的方法。·圆弧的拾取算法:1.做一个包容此圆弧的包围盒,判断拾取点是否在包围盒内。2.如果不在包围盒内则拾取失败。否则,计算拾取点到圆弧中心点的距离,并将该距离与圆弧的半径比较,得到两者之差的绝对值。3.如果该值大于给定的常量,则拾取失败。否则,计算拾取点与圆弧中心点连线和X轴正向的夹角,根据该角度值是否在圆弧起始角和终止角之间的区域内来判断拾取是否成功。●基数样条的拾取算法:1.做一个包容此基数样条的包围盒,判断拾取点是否在包围盒内。2.如果不在包围盒内则拾取失败。否则,用一个三次多项式来拟合曲线轮廓,用低阶的曲线相接而成原基数样条。如图4-9EB^图4-9样条曲线三次多项式函数定义为:x0)=q“3+6l甜2+clu+dlJ,0)=口2“3+b2u2+c2“+d2(4-2)将A,B,C,D四点的坐标代入公式(4-2)即可确定AD段的曲线参数方程,将u分别取0到1(0、0.1、0_2.…..0.9、1)十一个值代入参数方程,则把曲线的拾取离散化为折线的拾取。同理计算并判断点D之后的各段曲线。4.2.2.6结构图元实例的变换矩阵窗体自板上的每个结构图元都有一个Mat属性即交换矩阵用来记录对该图元实例的所有变换操作的累加。创建结构图元时该属性被初始化为单位矩阵。以下分别讨论平移、旋转、缩放操作是如何生成相应的变换矩阵并改变Mat属性。设定鼠标操作点移动前的坐标为(x1,y1),移动后的新坐标为(x2,Y2),图元对象当前变换矩阵为M。●平移操作1.分别计算(x1,y1)、(x2,Y2)与M的逆变换矩阵M。的乘积,得到操作点在原始坐标系中的坐标(x1’,Yl’)、(X2’,Y2’)。2.计算鼠标移动向量(1x,U。其中tx=x3.代入公式(2.15)中的3X2’-Xl’,ty=Y2’一Yl’。3矩阵即可得到平移矩阵Mt。4.计算矩阵M与Mt的乘积,赋给图元新的变换矩阵属性M。●旋转操作1.分别计算(x1。y1)、(X2,Y2)与M的逆变换矩阵M‘1的乘积,得到操作点在原始坐标系中的坐标(x1’。Yl’)、(X2’,y2’)。2.由原点指向(×1’,Y1)和(x2。,Y2’)分别构成两个矢量RI,R2。34计算两个矢量刚,R2之间夹角的余弦值c∞0和正弦值sin代入公式(2.17)中的3X0。3矩阵即可得到旋转矩阵M,。计算矩阵M与M,的乘积,赋给图元新的变换矩阵属性M。缩放操作5●1分别计算(x1。y0、(X2,Y2)与M的逆变换矩阵M一的乘积,得到操作点在原始坐标系中的坐标(x1’。Yl’)、(x2’,y2’)。234计算鼠标移动向量(s。,sy)。其中s。=x2’,X1’,sy=y2’,Yl’。代入公式(2.19)中的3X3矩阵即可得到缩放矩阵M。。计算矩阵M与M。的乘积,赋给图元新的变换矩阵属性M。4.2.3电子白板场景同步场景的同步就是指在师生使用电子自板功能进行绘图交流时,所有参与者的场景应保持一致,从而达到同步的显示效果,这是通过操作信息数据的同步来实现的。操作信息数据包以XML文件的形式在各端点间传送。在本系统中,场景的同步由界面与通讯控制模块来完成。以下给出XML文件的同步操作数据格式定义,附录1中是对文档结构进行描述的XML连接线图元和标注文本图元。●对于添加操作:结构图元XML片段的属性包括对象ID,该结构图元在元库中所属的类型GLibType,和一个变换矩阵Mat子元素。连接线图元XML片段的属性包括对象ID;子元素包括一个起始点,一个终止点和若干中间点,起始和终止子元素均包含两个属性:索引的结构图元D和索引点。Schema。操作信息的类型包括添加、删除和修改。白板图元类型有三种:结构图元、标注文本图元XML片段的属性包括对象ID,文本字符串textstdng,对齐方式align;和一个端点坐标Vertex子元素。●对于删除操作:三种图元类型的属性均为对象m。●对于修改操作:结构图元的修改操作包括移动、旋转、缩放和移动关键点;连接线图元的修改操作包括移动中间点;标注文本图元的修改操作包括移动和缩放。结构图元XML片段的属性包括对象ID,子元素包括一个变换矩阵Mat和关键点目的坐标KeyPointChange。连接线图元XML片段的属性包括对象ID,和一个中间点子元素MPoint。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690643914a384654.html
评论列表(0条)