各种高性能EDA/CAD相关算法
1. EDA lrc/drc 各种相关算法,如LRC的几何极速验证算法, 等高线算法(Marching squares), Hierarchy优化...
2. No-fit Polygon 算法。算法稳定,目前测试例子中未发现求解失败的情形。 20+20的多边形顶点数的nfp, 每秒不低于 5000个。
3. 样条分段拟合算法(三次Bezier)。 1000万顶点数耗时在 5~10s。
4. offset算法,内外offset, 去自交。 1000万顶点数 耗时在 3~8s ,比boost至少快一个数量级。
5. 各种曲线bezier/b-splines等求交/插值/拟合。多边形距离,巨量多边形重叠/碰撞快速检测,......
6. 为特殊应用定制算法;
7. 根据参考资料文献,实现高性能算法(几何/图形/数值计算等算法).
8. 实现语言主要是c++/c.
9. 其它概述. 使用过或者正在使用的语言/工具: python3; QT,vs6~2015, c++11; 各种cad文件格式比如dxf解析;绘图仪输入文件解析;......
以下测试包括Offset/fitting/NFP/排料
Offset
顶点数 8099个,耗时 4.5ms
接力offset
fitting
顶点数8099个,耗时19.61ms, 分成112段bezier曲线
NFP测试数据:
以下是来自 ESICUP (http://paginas.fe.up.pt/~esicup)的样本数据测试结果比较。 本人测试平台: CPU G1840 2.8G ,windows7x64
运行时间单位: ms
实例 | 多边形个数 | NFP总数 | Burke算法 | 改进移动碰撞法 | 本人算法 |
Shapes0 | 4 | 16 | 102 | 94 | 2 |
Shirts | 8 | 64 | 107 | 93 | 4 |
Swim | 10 | 100 | 1573 | 1328 | 10 |
trousers | 17 | 289 | / | / | 10 |
钣金测例1 | 52 ( 顶点总数10808个 平均顶点数207.846个) |
2704 | / | / | 3000 |
钣金测例2 | 52 (顶点总数2452 平均顶点数47.15) |
2704 | / | / | 600 |
改进移动碰撞法,出自《 改进临界多边形生成算法》 ,杨卫波,王万良. 计算机工程与应用, 2013,49(1),中图分类号:TP301.6 doi:10.3778/j.issn.1002-8331.1206-0291. 文中称测试用CPU为Pentium4 1.6G. 内存1G
shapes的nfp多边形
shirts的nfp多边形:
Swims的nfp多边形:
运用Nfp加速排料
以下排样均为固定高度与排样数量,目标是排出最小长度。
来自Padsystem安装光盘的实例, 7200 Shirt with a Yoke Pi.sty 无镜像,无旋转 86.6%
来自Padsystem安装光盘的实例, 7100 Classic Vest Lined Pi.sty 无镜像,无旋转 79.4%
对比papdsystem4 自带引擎
本人算法结果 85.49%
padsystem自带引擎的 78.165%. 本人算法结果 84%
ESICUP的测试样本 Shirts 85.6% 无镜像,无旋转 逼近世界最好记录
85.6%