2012年TouchVG的创新点
以下是从2012年5月到12月在TouchVG研究试验出的成果、创新点汇总。论文中只写了少部分,今年准备设计一套更清晰科学的跨平台绘图平台。
第一部分 二维图形显示接口
----------------------------------------------------------
1. iOS图形库渲染原理分析和试验,得出几种双缓存技术、动态显示、调整矢量显示质量等不同显示技术的性能对比结果,提出在使用Quartz 2D图形库时的几个优化方法。
2. SWIG在Android原生动态库上的应用,解决了Java与C++相互调用和扩展的难题,并总结了便于Android NDK编译和Java应用代码调用的多个要点。
3. 针对SWIG生成的代码在Android特定机型上遇到的内存问题分析原因,并采用Python脚本自动修复,该问题SWIG官方尚未发现。
4. 在Android上使用C++绘图通常是使用底层的Skia图形库,本方案试验发现使用顶层的Android Canvas(面向Java的框架)更容易开发,试验绘图效果和性能较理想。
5. 跨平台内核在显示设备相关图像上的处理策略,达到容易开发使用和跨平台的目的。同时基于变换矩阵设计了图像按任意角度和比例显示的算法。
6. 参考HTML5实现了精简的跨平台画布接口,达到设备平台实现耦合小和更多功能在跨平台内核中的目的。绘图接口基于Bezier设计,能让常见的矢量图形保持仿射不变性。
第二部分 多点触摸手势的应用
----------------------------------------------------------
1. iOS上的手势识别原理分析和试验,总结出多个交互界面非独占识别手势的方法、在快速手绘中不丢失笔迹的手势识别综合处理方法。
2. 设计了以手势原语为中心的交互体系结构,不同设备平台的手势识别结果映射到相同的交互接口上,达到交互绘图跨平台。
3. 针对Android手势识别框架不支持双指放缩和旋转的问题,采用基于矩阵累积变换的算法解决了双指触摸的手势分解问题。
4. 对传统的鼠标交互方式设计了手势映射的方法,让交互体系适应触摸和鼠标方式。
5. 采用基于矩阵累积变换的算法实现了使用双指触摸进行显示窗口实时放缩和矢量图形几何变换的功能。
6. 设计了多窗口(主绘图窗口和放大镜窗口)同步交互绘图的手势分发和同步显示方法。
7. 总结了一种在iOS上的手势分发技术,让多个交互界面能同时非独占响应触摸手势,避免了各界面对手势识别的重复处理和复杂分析工作,让各交互界面与手势识别框架无关。该技术可以成为专利,与论文可以无关。
第三部分 矢量图形的管理和交互操作
----------------------------------------------------------
1. 实现了各种基本矢量图形和图像的跨平台显示、几何计算(仿射变换、包络框、点中、框选、控制点单点变形)。设计了自由曲线、平行四边形、菱形、图像、正方体、网格等图形的绘制和保形变换方法。
2. 设计了一种不同于常规方法的图形设计结构,让几何信息与图形属性(线宽等)分离,让复合图形实体不重复存储子图形属性信息。同时结合C++模板编程技术实现图形实体实现隐藏、显示特性可替换的功能。
3. 实现了坐标智能捕捉(正交捕捉、特征点捕捉、网格捕捉)、图形选中后改变属性和几何变形的动态显示和实时反馈。
4. 针对图形单指变形(拉伸、旋转、移动、错切)和双指任意变形(放缩、旋转、平移)设计了基于矩阵变换的算法。
5. 使用桥接模式设计了一种不同于常规方法的序列化接口,使得跨平台图形实体类与存储格式无关,应用程序可以扩展为XML格式、JSON格式、数据库等不同读写方法,在实现序列化接口时与图形细节隔离。
6. 针对阅读器等常见应用界面的不同情况,设计了在应用程序的宿主界面中附加绘图界面的方法,宿主界面滚动放缩显示时绘图界面能同步滚动显示,内部采用的是变换矩阵计算。
7. 设计了上下文动态操作界面的跨平台方法,在各设备平台上可以实现不同界面效果。
8. 基于矢量格式的多线程动态录屏和播放机制实现,达到不影响用户绘图操作和录屏数据轻量化的效果,采用了增量录屏技术。
9. 一种不需要改动绘图命令的基于数据改动监听的简易Undo/Redo方法。