IT项目管理详细分析文档_第1页
IT项目管理详细分析文档_第2页
IT项目管理详细分析文档_第3页
IT项目管理详细分析文档_第4页
IT项目管理详细分析文档_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Smart Geometry详细设计说明书IT Project ManagementSCUTCopyright1 概述1.1 系统简述由于目前的主流电子课件系统, 无法满足教师在课堂教学互动中需要与用 户界面自然、 高效、连续性交互的要求。 我们准备用我们的实际行动来试图改变 这一现状,本项目拟实现一个能在 ipad 上运行的智能几何教育平台,其功能包 括草图识别,手势识别,动态几何约束等。由于时间有限,动态几何约束求解与 动态几何可视化这部分的功能暂不准备实现。 非功能性的需求有系统出错处理及 易操作性。1.2 软件设计目标本项目系统概要设计说明书是基于 Smart Geometry 智能几

2、何教育平台需求 分析书进行编写的。 该项目将以笔代替鼠标键盘, 能够连续添加笔迹批注, 勾画 并识别几何草图, 用笔手势操纵界面元素。 本概要设计同时也是为详细设计及后 续开发,提供指导作用。预期的读者:详细设计人员开发人员测试人员用户1.3 参考资料 ipad 开发应用实战, iphone4 与 ipad 开发基础教程, Objective c 基础教程, ipad 开发基础教程, ipad 应用开发实例。2 术语表本文档所涉及到的属于包含如下:1 、 Stroke :笔迹,用户一次落笔提笔2、Pen_Info :预处理3、Graph:图形类4、Guint :图元类5、Graph_Edit

3、:图形编辑类6、Constraint :图形与图形之间的约束,一个图形拥有多个约束,由约束 的类型来标识。7、特征点:用于划分图元的点,比如三角形的顶点。8、点集:一系列点的集合9、图元:组成图形的最小单位,比如三角形的边。10、双线程:当开始录制视频时,创建新的线程进行录制操作。11、切割:通过特征点来划分点集属于的图元类型。12、拟合:将被划分好的图元计算出最能代表该点集的方程表达式。3 用例上图表明使用本系统的用户需要打开软件系统, 就能使用系统, 用户输入图形进 行草图识别,并可以对识别出来的图形进行清空、保存等功能。用例描述序 号用例编 号用例名称简单描述1UC 01graph-in

4、put用户进行草图输入2UC 02graph-save用户对识别出来的图形进行保存3UC 03graph-load用户读取已经保存的图形4UC 04graph-delete用户对识别出来的图形进行清空删除5UC 05graph-adjust用户对已绘制的图形进行调整6UC 06graph-handle对输入的草图进行的一系列处理过程7UC 07pre-handle系统对输入的草图进行预处理8UC 08graph-cut系统根据特征点进行图元的分割9UC_09graph-recognization系统对分割出来的图元进行识别10UC_10graph-rebuild系统根据划分出来的图元进行图形的

5、重组11UC 11graph-reshape系统对重组出来的图形进行规整12UC 12graph-constraint系统对已有图形保持几何约束13UC 13graph-output系统输出一系列图形处理步骤后产生的图形4 设计概述4.1 简述 本系统主要采用面向对象设计、 主机的结构模式进行开发, 利用数学的几何 知识进行求解问题。4.2 系统非功能描述、约束与估算4.2.1 系统非功能描述和约束如下表任何一台具有一定的内存、无问题的 CPU、一定的数据存储量的可使用的iPad 即可。4.2.2 估算暂无问题。4.3 系统的复用计划库、框架、模式、构件等方面的复用暂不考虑。4.4 系统结构设

6、计4.4.1 系统边界模型1. 可有效识别出基本图形,比如直线,三角形,圆形等。2. 同时具有实时调整图形的功能。3. 提供保存和重新载入功能。4. 提供录音和录频的功能。5. 提供笔形,笔色,背景色选择功能。6. 提供坐标系坐标功能。4.4.2 系统功能架构1、智能几何 (smart geometry) 系统技术框架主要包括七部分:笔交互信息 收集,用户意图判断器,笔迹识别,图形选定,编辑,存储。2、笔交互信息收集:负责从外部硬件环境中获取最初的点集信息 (Pen_Info ),并对收集到的点集信息进行早期的预处理, 包括平滑和消除躁点 处理,最后得到经过预处理以后的点集信息信息,被称为笔迹

7、( Stroke )。3、笔迹识别:分别对图元或者手势进行识别: 对图元的识别包括先对笔迹 ( Stroke )进行分割, 产生一系列图元对 象(Gunit )集合,并对其识别和重构,最终得到图形对象( Graph),其中图元 对( Gunit )包括点图元( Point_Unit ),直线图元( Line_Unit ),曲线图元 (Curve_Unit ),图形对象( Graph)是由多个图元( Gunit )对象构成,包括点 图形(Point_Graph ),直线图形(Line_Graph ),曲线图形(Curve_Graph)(圆, 椭圆或者弧),三角形( Triangle_Graph

8、),四边形( Rectangle_Graph ),和 特殊图形( Other_Graph)。对手势的识别包括从专家库中获取判断手势意图的规则, 最后识别出 手势的意图。4、图形选定:负责对存在约束的图形几何的选定,主要通过图形探查器对 图形进行选定操作,选定的图形被称为 Selected_Obj 。5、编辑:用户进入编辑态时,可以对选定图形进行缩放,变形,移动,旋 转四种编辑。6、存储:对用户操作完后的图形进行存储。4.4.3 系统的逻辑架构笔交互信息收集转换器: 负责从外部硬件环境中获取最初的点集信息 Pen_Info,并对 PenInfo进行早期预处理,包括平滑和消噪处理,最后得到经过预处

9、理以后的点集信息,被称 为笔迹 Stroke。用户意图判断器:负责从笔迹 Stroke中判断用户意图,用户意图包括画图意图Sketch和手势意图 Gesture。识别器:分别对图元和手势进行识别:对图元的识别包括先对笔迹Stroke进行分割,产生一系列图元对象 Gunit 集合,并对其识别和重构,最终得到图形对象Graph,其中图元对象Gunit包括点图元 Point_Unit 、直线图元 Line_Unit 、曲线图元 Curve_Unit ,图形对象 Graph是由 多个图元 Gunit对象构成,包括点图形 Point_Graph 、直线图形 Line_Graph、曲线图形(圆、椭 圆或者

10、弧) Curve_Graph 、三角形 Triangle_Graph、四边形 Rectangle_Graph、和非特殊图形 Other_Graph;对手势的识别包括从专家库中获取判断手势意图的规则,最后识别出手势的 意图。图形选定器: 负责对存在约束的图形几何的选定, 主要通过图形探查器对图形进行选定 操作,选定的图形被称为 Selected_Obj,跟当前选中图形 Selected_Obj存在约束的图形将通过 约束探查器查找几何约束表来一起选定, 一起选定的图形被放在一个链表里, 该链表被称为 Selected_Graph_List。动态几何约束器:负责对存在约束的几何图形之间进行编辑操作时

11、候的动态约束保持, 核心模块为动态几何处理器,将存在几何约束的选中图形的集合Selected_Graph_List作为输入,可对改集合里面的图形进行旋转、平移、 缩放和拖动顶点等编辑操作, 用户进行编辑操 作的时候,图形与图形之间的几何约束关系将得到动态保持。存储转换器:负责将图形的性质和图形跟其他图形之间的动态关系存储下来。 绘图器:负责图形和图形之间几何约束关系的表示以及其他特殊类型图形标识的绘制, 其中每个图形可用用户自定义的画笔进行绘制, 且图形与图形之间的几何约束和特殊类型图 形的标识都采取常见的标识。4.4.4 系统的物理架构系统的运行环境: iOS操作系统 (4.3 及以上)开发

12、环境: Mac OS X Lion 操作系统, Xcode4.4.5 系统数据模型编号名称说明1Point由两个整形组成,记录点的坐标2Vector链表,用于记录数据类型为 T 的一系列数据3Gunit图元类,有一个 List 数据成员,表示该图 元的点信息4Constrain用于记录图形与图形的约束,由约束的类型和与其相关联的图形的指针5Line_unit直线图元类,是 Gunit 的子类,拥有 Point 类型的 数据成员,分别表示直线的起点和终点,这条直线 和效率的截距6Curve_unit二次曲线类, 是 Gunit 的子类,拥有 6 个 double 类 型的参数,分别是二次曲线方称

13、 Ax2 +Bxy+Cy2 +Dx+Ey+F=07Graph图形类,并具有一个 vector 的约束列 表记录与该图形有关的约束8Line Graph包含一个 line unit ,图形类的子类9Curve Graph曲线图形,包含一个 curve unit ,图形类的子类10Triangle_Graph包含三个 line_graph ,用于直线的约束,也拥有三 角形的约束11Rectangle Graph包含四条直线12Other Graph存储非二次曲线轨迹各个类的数据成员都设为 Public, 可以直接通过点访问。 整个系统分为两部分 数据: 图形集和约束集 系统使用十字链表来存储图形

14、, 通过约束建立图形与图形 之间的联系。在实现动态的约束保持的时候使用该十字链表 , 通过遍历有约束的图形从而得到一起变化的图 形。4.5 系统的接口设计4.5.1 用户接口基于笔交互的概念整个界面与传统 GUI 界面设计风格不同 , 本系统将提供 一个简洁 的界面, 只需要使用手指就可以轻松地进行操作。在草图绘制勾画区域 , 落笔可以进行相应的草图绘制1、点击 Pen style 图标就可以进行笔形的选择2、点击 Pen Color 图标可以进行笔色选择3、点击 Record 图标再在里面选择开始 , 暂停, 终止进行录制或者暂停终止 等操作4、点击 save 图标, 进行存储操作5、点击

15、Open 图标, 选择需要打开的文件则可以重新载入原本的文件6、点击 clear 图标, 就可以清除掉画板上的所有图形7、点击 chart 图标 , 可以坐标及坐标系8、点击 Minimum 图标, 就可以将程序最小化9、点击 Exit 图标, 就可以退出该运行程序4.5.2 外部接口无4.5.3 内部接口说明本系统之内的各个系统元素之间的接口的安排编号作用函数原型1预处理vector Pen Info:getNewPen Info()2特征点识 别void Cut(vector pList,vector gList)3图元分割GUnit* GUnit:recognize(vector &pL

16、ist)4图元重组bool Stroke:rebuild(vector& real,vector& special)5图形规整void Holotactic(List grList)编号作用函数原型6文件保存void CEditorView:save file(CString filename)7文件加载void CEditorView:open file(CString filename)8图形输出void CEditorView:paint units graphs()9约束识别voidCEditorView:recognize_constrains(vectorselected_list

17、)4.6 系统约束与策略4.6.1 系统约束如下性能1、提供先进的识别技术, 提高图形处理响应 速度2、草图识别的时间不超过 0.2s3、容量上的扩展以及功能上的补充易维护本系统设计到很多维护的流程, 应方便维护, 以提高工作效率。响应速度快系统在处理图形时,对系统延迟往往有一个 忍耐极限,所以要求系统响应速度应在用户 忍耐范围内。稳定性1、故障间隔时间应大于 1000 小时2、系统要保证数据的一致性,完整性,准确性要求达到 99%扩展性对新增业务,系统提供业务组件的动态部署 功能,和平滑升级功能。易操作性要求操作界面简单方便4.6.2 系统策略采用原生的 SDK,利用数学几何知识以及高斯离散

18、维数积分的知识来提高性能4.7 对象模型设计4.7.1 Stroke 类属性/ 方法说明QList pList定义一个存储一个笔迹当中所有点对象的动态 数组QList glist存放单个 STROKE里面的图元Stroke(QList &)构造函数,传入一次落笔提笔间所有的点对象Void find_Specialpoint(QList &);特征点识别void Speed(QList &)速度过滤方法: 低于平均值的一定百分比算是特 征点void Curvity(QList&)曲率过滤voidDirection(QList &)方向过滤void Space(QList &)进一步处理GUnit

19、*recognize(QList &)识别各个图形的类别4.7.2 GUnit 类属性/ 方法说明Point start起点Point end终点int type图元类型int id图元编号bool isSelected当前是否被选中virtual void draw(QPainter &)接口函数,画出图元,继承的图元类实现virtual void translation(Point &)接口函数,平移图元,继承的图元类实现virtual void rotation(qreal &)接口函数,旋转图元,继承的图元类实现virtual void scale(void)接口函数,放大图元,继承的

20、图元类实现4.7.3 Point Unit类属性/ 方法说明qreal axisX点的横坐标qreal axisY点的纵坐标void draw(QPainter&)画出点4.7.4 Line_Unit 类属性/ 方法说明Point cut point记录在与之相切的圆上的切点即在原点的情况下的圆的切点bool isCutLine是否是圆的切线bool judge(QList& )计算出直线的相关系数 通过相关系数进行判断 是否为直线void draw(QPainter &)画出直线4.7.5 Curve Unit 类属性/ 方法说明qreal a,b,c,d,e,f为二次曲线的标a*x2+b*

21、xy+c*y2+d*x+e*y+f=0准最简式 的系数qrealmajor axis,minor axis长轴,短轴; major_axis 是 x 方向 上的轴 长;minor axis 是 y 方向上的轴长Point centre中心坐标Point f1,f2焦点Point move移动的向量坐标qreal alpha旋转角qreal start_angle, end_angle画弧线时的起始角和终止角(并非是起始点、终 点和原点的连线与坐标轴的夹角) 在画二次曲线 时有作用bool ellipse椭圆为 true, 圆为 falsebool ishalfCurve如果是半个以上的二次弧线

22、则为真 , 默认值是 falseQList track非二次曲线轨迹boolIsSecDegreeCurv(QList& )如果是二次曲线返回 true, 如果是非二次曲线则 返回 falsevoid judge(QList&)判断是何种二次曲线boolLine tangent(Line Unit)计算一个曲线的切线boolLine_Curve_CutPoint(qreal &,qreal&,qreal&,qreal&,qr eal&,qreal &, qreal &,qreal &)求直线和曲线的切点 , 并进行判断,只有当该切 点在该直线和曲线上时才返回真 ,/ 当 draw 为 true

23、 的时候画出切点4.7.5 Graph 类属性/ 方法说明int type用于存储时标识出图形的类型QList constraint list存储与图形约束的其他图形信息int local graph id图形的 IDbool isSelected是否被选中virtual bool recognize_constraint(Grap h*,QList&)识别图形与其他已存在的图形之间是否存在约束约束void construct_constraint(Grap h*,Constraint_Type,Graph* ,Constraint Type )如果存在约束,将约束构造出来virtual vo

24、id translation(constQPointF&)虚函数,平移选定图形及其相应的约束virtual void rotation(const qreal&,const QPointF &)虚函数,旋转选定图形及其相应的约束virtual void scale(const qreal &)虚函数,放大或缩小选定图形及其相应的约束4.7.5 Point Graph 类属性/ 方法说明bool belong to rectangle是否在矩形上bool is on line是否在直线上bool vertex of special line标识它是否为三角形特殊线的落在三角形边上的端点,在 KE

25、EP的时候有用bool cut point of circles标识是否为两个圆的切点voidkeep_constraint(Point& )总领函数, 用于直接拖动点的时候用, 传进一个 点的坐标,然后根据点所在的直线的性质不同, 传不同的参数给void keep_vertex_of_line(Graph *)当某一个顶点动了的时候, 可以调用这个函数来 调整那些以它作为端点的直线, 而不是调用总的 KEEP CONSTRAINT4.7.6 Line Graph 类属性/ 方法说明Line Unit* line;指向相应的图元bool has start ,has end;用于识别约束时表示

26、直线的端点有没有跟点列表里面的点图形连到了一齐bool is special用于标识直线是否为三角形的三角形的特殊线bool is tangent用于标识直线是否为切线void recognize_constraint(QLis t &)用以约束识别开始阶段时的直线和存在的点之间的约束识别voidadjust_vertex(Point,int)用于固定一端后来根据一个直线上新的点来调 整另一端的位置 ,0 为 start , 1为 endbool recognize_constraint(Grap h* graph,QList& point list)总领的函数intjudge_legal_i

27、ntersection( Line_Unit* ,Line_Unit* ,P oint&)判断交点的属性bool judge_legal_intersection(Point )判断交点是否与直线上已有的点相同或很相近,若是的话则不必再生成新的点void keep_constraint()主要用于当直线的位置改变的时候, 改变其上面 存在的点的位置(非自身端点) ,然后再通过这 些被改变的点去带动其他直线void keep_point_on_line(Point_ Graph* )主要用于那些非限制点的位置变动void keep_intersection_point(P oint Graph*

28、 )用于计算交点的新位置4.7.7 Curve_Graph 类属性/ 方法说明Curve Unit* curve指向相应的图元boolrecognize_externally_tang ent_constrain(Triangle_Gr aph * )识别外切三角形bool recognize_constraint(Curv e_Graph*,QList& )用于识别圆与圆之间的关系, 内外切, 或者相交boolrecognize_constraint(Line _Graph*,QList& )用于识别圆形与直线之间的关系,总领函数boolrecognize_constraint(Tria n

29、gle_Graph*,QList &)用于识别跟三角形的交点,非内切和外接bool recognize_line_tangent_co nstrain(Line Graph *)识别切线bool recognize_diameter(Line_G raph* ,QList&)用于识别直径bool recognize_radius(Line_Gra ph* ,QList&)用于识别半径bool recognize_common_line_con straint(Line_Graph* ,QLis t &)识别与直线的一般约束bool judge_recognization(Line_ Graph

30、*)判断是否应该进行直径半径和一般直线的识别int judge_legal_intersection( Line Graph*,Point)判断直线与圆的交点是否符合条件 :-1 为不在直 线上, 0为在直线上, 1为起点, 2为末尾点voidmake constraint(Line Grap生成直线和圆相交的点的有关约束h*,Point&,QList& )bool recognize_constraint(Grap h* ,QList&)总领的函数4.7.8 Triangle Graph类属性/ 方法说明QList tr lines指向三角形的各条边QList tr vertexes存储三角形的各个点QList tr angles存储三角形的各个角QList tr line

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论