场景:

一个富有创造力的玩家想要绘制自己喜欢的图形。

背景:

(1)典型用户:Mondrian

(2)用户的需求/迫切需要解决的问题:

   用户可以得到自己想要画的图形;

用户需要应用为其提供绘画工具;

用户需要应用为其保存其“大作”。

(3)假设:

用户可以凭借自己的意愿作画,不需要系统辅助;

用户已经掌握应用中freestyle模式工具的使用。

场景:

Mondrian今天在玩游戏时突发奇想,想要模仿高斯的壮举,实现尺规画正十七边形。于是他进入了freestyle模式,选择了直线和圆工具进行绘画,他通过数学资料和自己的设计构想,最终实现了尺规作正十七边形的壮举,他骄傲的保存了自己的“大作”方便以后向朋友们炫耀。

用例文档:

标题:使用freestyle模式绘制用户想要的图形

角色:用户(Mondrian

主要成功场景:

Mondrian今天在玩游戏时突发奇想,想要模仿高斯的壮举,实现尺规画正十七边形。于是他进入了freestyle模式,选择了直线和圆工具进行绘画,他通过数学资料和自己的设计构想,最终实现了尺规作正十七边形的壮举,他骄傲的保存了自己的“大作”方便以后向朋友们炫耀。

步骤:

1.打开进入Geomystery软件;

2.点击菜单栏“freestyle”按钮,进入freestyle模式;

3.使用左侧系统提供的工具在屏幕中间的画布上进行绘画;

4.使用点工具画点;

5.使用直线工具画线;

6.使用圆工具画圆;

7.交替使用三种工具,完成绘画;

8.点击保存,将用户绘制的图形保存在本地,或点击放弃,不保存并留在当前页面;

9.点击左上角的返回按钮,返回主界面。

扩展场景:

因为找不到保存路径等原因导致图片保存失败;

当用户恶意使用导致画面被占满后无法继续绘制。

功能说明书:

功能:通过使用freestyle绘制用户的目标图形

使用

1.打开进入Geomystery软件;

2.点击屏幕中部右侧的菜单栏中的“freestyle”按钮,进入freestyle模式;

3.使用左侧系统提供的工具在屏幕中间的画布上进行绘画;

4.点击选择左侧工具栏的点工具,使用点工具画点;

5.点击选择左侧工具栏的直线工具,使用直线工具画线;

6.点击选择左侧工具栏的圆工具,使用圆工具画圆;

7.交替使用三种工具,完成绘画;

8.点击保存,将用户绘制的图形保存在本地,保存成功后停留在当前页面,或点击放弃,不保存并留在当前页面;

9.点击左上角的返回按钮,返回主界面。

 

 

技术说明书:

对于一个带显示的与用户交互的系统,通常可以分成模型(Model)视图(View)和控制器(controller)三个部分,MVC架构好好在把一个整体分开,方便设计,修改,测试。

因为每一个模型元素都有一个或有多个视图,所以模型中需要记录自己的多个视图,视图中也需要记录自己是哪个模型的视图,即双向绑定。

依赖是一种复杂的关系,举例来说:一个点在直线上是一种简单的依赖,这种依赖是一对一的,显然当直线被删除时,点就不再存在。因为直线不允许重合,所以两个相交直线必有一个交点,而这个交点依赖这两条直线,这种依赖是一对二的,当交点依赖的其中的一条直线被删除了,那么交点也不存在了。

所以点需要记录自己定义了谁,影响了谁,依赖于谁;线要记录自己的定义方式,定义点,线上的点数组。这也是一种双向绑定。

当坐标系变换、模型对应、模型依赖关系都有双向绑定的时候,虽然MVC被分成了三个部分,但是仍然是一个可以操纵的整体。

以上是对于游戏引擎的一个综合阐述,下面介绍对于freestyle模式来说所需的具体的技术实现:

A.点工具:启动自动机DFA,确定点工具所需要接受的信息(一组坐标),根据用户在画布convas上的点击,来标记用户当前选择的点的坐标并将其传入DFA,随后由DFA触发draw事件屏幕上显示这个点。并有controller确定其是否有依赖关系等,并将其存储在表中。

B.线工具:启动自动机DFA,确定点工具所需要接受的信息(两组坐标),根据用户在画布convas上的点击,来标记用户当前选择的点的坐标并将其传入DFA;再根据用户在画布convas上的点击,来标记用户当前选择的点(第二个点)的坐标并将其传入DFA;随后由DFA在屏幕上显示这条线。随后由DFA触发draw事件在屏幕上显示这个点。并有controller确定其是否有依赖关系等,并将其存储在表中。

C.圆工具:启动自动机DFA,确定点工具所需要接受的信息(两组坐标),根据用户在画布convas上的点击,来标记用户当前选择的点的坐标并将其传入DFA;再根据用户在画布convas上的点击,来标记用户当前选择的点(第二个点)的坐标并将其传入DFA;随后由DFA触发draw事件在屏幕上显示这个圆。并有controller确定其是否有依赖关系等,并将其存储在表中。

转载于:https://www.cnblogs.com/liminglun/p/7224567.html

【第三组】用例+功能说明+技术说明相关推荐

  1. 流量卡之家:三个用例可以帮助消除制造商对AI功能的疑虑

    在最近一项关于人工智能的制造业实际调查中,44%的汽车和制造业受访者认为AI在未来五年内对制造业的"非常重要",而近49%的人表示是"成功的关键." 制造商实际 ...

  2. 扩增子图表解读7三元图:三组差异数量和关系

    点击上方蓝色「宏基因组」关注我们!专业干货每日推送! 背景介绍(Introduction) 宏基因组学 宏基因组学目前的主要研究方法包括:16S/ITS/18S扩增子.宏基因组.宏转录组和代谢组,其中 ...

  3. origin三元相图_扩增子图表解读7三元图:三组差异数量和关系

    点击上方蓝色「宏基因组」关注我们!专业干货每日推送! 背景介绍(Introduction) 宏基因组学 宏基因组学目前的主要研究方法包括:16S/ITS/18S扩增子.宏基因组.宏转录组和代谢组,其中 ...

  4. 比较两组数据的差异用什么图更直观_扩增子图表解读7三元图:三组差异数量和关系...

    点击上方蓝色「宏基因组」关注我们!专业干货每日推送! 背景介绍(Introduction) 宏基因组学 宏基因组学目前的主要研究方法包括:16S/ITS/18S扩增子.宏基因组.宏转录组和代谢组,其中 ...

  5. [答疑]业务序列图推导出系统的三个用例注册SIM卡、申请激活、审核激活申请

    软件方法(下)分析和设计2021版本连载-第8章 分析类图(1)>> 勤瘦(216***56) 10:29:41 从业务序列图推导出系统的三个用例注册SIM卡.申请激活.审核激活申请 勤瘦 ...

  6. MPB:青岛大学苏晓泉组-全球微生物组整体结构和功能的搜索

    为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...

  7. 解读三组容易混淆的Dockerfile指令

    长话短说,今天分享三组容易混淆的Dockerfile指令, 帮助大家编写更优雅的Dockfile文件.构建更纯净的Docker镜像. COPY  vs ADD COPY.ADD主体功能类似:从指定位置 ...

  8. js实现日历框上一日下一日_一日三项令人兴奋的Lucene功能

    js实现日历框上一日下一日 昨天是富有成效的一天:突然,Lucene有了三个令人兴奋的新功能. 表达式模块 昨天提交的第一个功能是新的expressions模块 . 这使您可以使用任意String表达 ...

  9. 一日三项令人兴奋的Lucene功能

    昨天是富有成效的一天:突然,Lucene有了三个令人兴奋的新功能. 表达式模块 昨天提交的第一个功能是新的expressions模块 . 这使您可以使用任意String表达式定义用于排序的动态字段. ...

最新文章

  1. Android优化五:布局优化
  2. VScode 乱装插件环境破坏踩坑自我反思总结
  3. C语言从文件中读入矩阵,并且将矩阵转置
  4. 2018android wear手表,谷歌正开发三款智能手表 Wear OS系统逐步脱离Android范畴
  5. js 获取字符串最后一位的4种方法
  6. LeetCode283——Move Zeroes(将0移动到数组最后面)
  7. 三招让你成为vue.js大师
  8. 激光雷达原理及发展现状
  9. 读《卧底经济学》有感
  10. html有序列表序号字体大小,css – 对不同字体大小的排序列表编号进行样式化
  11. 如何下载 TI 公司的官方例程以及为用户写好的标准头/源文件
  12. 无模型预测控制(model-free predictive control)+ESO
  13. OpenCV基于Python霍夫圆检测—基于梯度的霍夫圆检测
  14. ON DUPLICATE KEY UPDATE 作用及一句SQL实现批量修改
  15. Unity Shader入门精要学习笔记 - 第14章非真实感渲染
  16. jav: bigInteger
  17. [Codewar练习-javac++]Twice linear(双线性)
  18. 网易dns劫持检测,dns被劫持检测方法有哪些?
  19. 显卡风扇狂转的解决方案
  20. 终极RPA术语表:机器人流程自动化的基础概念

热门文章

  1. oauth2 单点登录_Spring Security Oauth2和Spring Boot实现单点登录
  2. Flutter开发之ListView添加HeaderView和FooterView(38)
  3. Hbuilder Android证书申请
  4. vue 打印 canvas 显示空白
  5. Expanded, SingleChildScrollView, CustomScrollView, container, height, width
  6. springboot 利用configureMessageConverters add FastJsonHttpMessageConverter 实现返回JSON值 null to ...
  7. CF 19D Points 【线段树+平衡树】
  8. delphi SAP
  9. JNI调用native方法出现 java.lang.UnsatisfiedLinkError: XXXclass.XXXmethod()异常的解决办法
  10. 窗口缩放导致页面排版错乱的解决方法