创新实训 - 个人报告
Lagomoro
这个作者很懒,什么都没留下…
展开
-
【创新实训 - 个人报告】09 - WebGL跨域渲染图片
开始之前在本周进行开发时,我遇到了WebGL不能跨域渲染图片的问题。图片是以这样的方式获取的:'http://xxx.xxx.xxxx/get_img?id=1'如何在不能使用服务器转发的情况下,解决跨域渲染问题呢?设计思路最原始的LoadImage:Graphics.loadImage = function(src){ return new Promise((resolve) => { Graphics._image = new Image(); Graphics原创 2021-06-07 22:37:43 · 176 阅读 · 0 评论 -
【创新实训 - 个人报告】08 - 功能选项卡
开始之前在本周进行开发时,我们需要新增功能选项卡。功能选项卡可以增加功能面板的数量,有利于我们新增更多的功能。设计思路首先新建选项卡的变量:data () { return { tab: 2, tabs:[ {icon: 'mdi-account', text: '用户菜单', login: false}, {icon: 'mdi-cloud-outline', text: '云功能菜单', login: true},原创 2021-06-02 10:27:13 · 128 阅读 · 0 评论 -
【创新实训 - 个人报告】07 - 层次结构:多边形融合算法
开始之前在本周进行开发时,我们遇到了非常有意思的一个需求。对文章进行层次化处理,需要把字按照词、句子、段落、文章、书籍的顺序组合起来。每个字都有一个多边形,因此词、句子、段落、文章、书籍就需要把这些多边形组合起来显示。如何写这个算法是重中之重。设计思路多边形的存储方式是一个有序点数组。例如:[[0, 0], [0, 1], [1, 1], [1, 0]]如果这时又来了一个多边形,要和上面组合呢?[[0, 0], [0, 1], [-1, 1], [-1, 0]]我们需要剔除公共边:[[0,原创 2021-05-16 14:48:23 · 354 阅读 · 0 评论 -
【创新实训 - 个人报告】06 - 向引擎注册插件
开始之前在上文中,我们提到了几样基本工具之间的配合。然而,基本工具也需要向引擎注册才能使用。在此基础上,我们需要给引擎写一些模块用来适配。设计思路最基础的工具类,告诉引擎这是一个工具:// ================================================================================// * Tool <SDUDOC Engine>// ----------------------------------------原创 2021-05-09 00:06:08 · 115 阅读 · 0 评论 -
【创新实训 - 个人报告】05 - 直线工具和点工具的配合
开始之前在上文中,我们提到了直线工具的设计思路。然而,直线工具和点工具不能独立存在,它们二者之间需要建立配合,才能保证软件质量。设计思路关于点工具,点有三种创建方式:自由点,交点、从属点。后两种创建方式需要依赖直线。RenderManager.addRenderer(new Renderer("dot.mouse", 100, DotFactory, function(ctx){ if(DocumentManager.getCurrentPage() <= 0) return; le原创 2021-04-19 10:54:52 · 99 阅读 · 0 评论 -
【创新实训 - 个人报告】04 - 直线工具的设计思路
开始之前在上文中,我们提到了点工具的设计思路。几何学中,第二基础的元素是什么?是一维的线。通过线可以快速构建网格布局,进行快速切片,帮助用户快速完成相应功能。设计思路二维空间中,线的设计相对简单,它由两个端点确定一条线段。所以我们需要这两个基本属性,并构建Line基类:// ================================================================================// * Line// ===================原创 2021-04-10 21:23:18 · 107 阅读 · 0 评论 -
【创新实训 - 个人报告】03 - 点工具的设计思路
开始之前在上文中,我们提到了绘图引擎和插件加载。在本次项目的编辑器中,每一个工具都视作一个插件。几何学中,最基础的元素是什么?是零维的点。在任何维度的空间中,想要形成几何体,都必须有点作为支撑。在我们这个项目之中,对图像进行标记、切割,需要依赖点来完成。这就是第一个插件编写点的原因。设计思路二维空间中,点具有两个维度的坐标x, y。所以我们需要这两个基本属性,并构建Point基类:// ========================================================原创 2021-03-29 13:11:56 · 158 阅读 · 0 评论 -
【创新实训 - 个人报告】02 - 几何绘图引擎架构和插件加载
开始之前书接上文,在上一篇报告中我谈到了关于插件加载的问题,这和本次创新实训项目的需求有很大联系。一个古籍管理系统的编辑器,可能会产生大量的需求变动和功能增减,而这些内容在项目初期很难被全部考虑进去,需要通过多次版本迭代来实现。因此,项目需要有很强的可维护性,便于快速添加新功能。这就是为什么我要写一个绘图引擎的原因,因为写完引擎之后,所有的“工具”都可以通过插件的形式快速添加。模块划分Input/MouseInput:事件分发器,它们向浏览器页面注册键盘/鼠标事件,分发监听器监听到的事件给引擎内需原创 2021-03-20 13:34:50 · 148 阅读 · 0 评论 -
【创新实训 - 个人报告】01 - Vue中动态添加全局JS脚本
【创新实训】个人报告01 - Vue中动态添加全局JS脚本开始之前在我们的创新实训中,针对于古文字图像切片的前端编辑器需要做大量图形处理的工作,对于一个需要复杂绘图计算的web应用程序,将全部代码都放在.vue文件里显然是不现实的,需要一个三千行以上的代码包来处理这一复杂的架构。javascript可以利用"prototype"来实现类似面向对象编程,也是我们在项目中采用的方式,例如:function Dot2D(){ this.initialize.apply(this, arguments)原创 2021-03-13 03:58:51 · 748 阅读 · 1 评论