当前位置: 首页 > ds >正文

图形编辑器基于Paper.js教程29:基于图层的所有矢量图元的填充规则实现

背景
在lightburn中,对于填充图层,有这样一个隐藏的逻辑,那就是,在加工时,填充规则是以填充图层的所有元素进行计算的,什么意思那?

如果你在填充图层中画了两个图形,一个圆,一个矩形,如果这两个图形不相交,也不存在任何包含关系,那么你在加工后,你会得到一个填充的矩形和一个填充的圆。
如下图:
在这里插入图片描述

假如现在移动圆形,使其与矩形相交或者包含,那么你最后的结果就不是一个矩形一个圆了。
而是下面的效果

在这里插入图片描述
在这里插入图片描述

重叠部分部分会被镂空。这个规则 是以图层的所有元素进行 奇偶规则 (evenodd)的运算。而且是默认的,对于其他的软件,要实现这种效果,需要将元素进行组合后才能实现。在用户的不断要求下,前一段时间,我也终于给TS加上了这个功能。

下面简单说一下技术方案,在分析填充的雕刻图层时,需要将该图层的所有元素组装起来,这里的组装我使用的复合路径,也就是SVG中的Path标签,也就是将图层中所有图元转换为一个Path路径。并对这个路径进行奇偶填充线。最后就能使用很简单的操作得到非常复杂的镂空作品。
需要注意的是,由于将所有图元组合起来,会改变个体的属性,所以我们需要单独创建一个对象,并在完成填充线,生成gcode后,将临时元素删除。如果计算的元素非常多的话,有时会比较卡。

之前的一个比较复杂的作品在这里插入图片描述
拥有883个子路径,生成的gcode 6.14 M

随着应用功能的不断增多,框架,代码组织,模式设计,现在变得尤为重要。功能能做出来还不行,还要保证良好的性能表现。当所有的按钮, 功能都向用户开放时,状态的维护,边界,交互的中间状态会变得非常难以维护。项目越往后走,越是越是泥泞。

当你感到 力不从心时,可以去看看一些优秀的开源项目,一些框架,库的源码,他山之石,可以攻玉。

最近令人高兴的是,我的教资面试通过了,嘻嘻…真是做梦都能让人笑醒,考试前真的没有演练,全靠临场发挥,而且面试时做的很差劲。我都打算下半年继续考了,结果面试竟然通过了,想起来我就感觉自己真是太幸运了,我真是要谢谢面试老师,放我一马。面试后还要做个普通话测试,考个二甲,然后体检,就能等着拿教师资格证啦。

最近在盘算着下半年的目标,是要健身还是练字,下一个目标是拿什么证书?

http://www.xdnf.cn/news/14593.html

相关文章:

  • 【C++】list容器实现
  • Lighthouse与首屏优化
  • 【看到哪里写到哪里】如何在C中使用多进程设计(1)
  • STM32 开发 - STM32CubeMX 下载芯片支持包、创建 HAL 库工程
  • 牙科医疗设备EMC电磁兼容技术讨论
  • 数列的极限
  • 推荐标注数据标注
  • 【精选】计算机毕业设计基于SpringBoot高校社团管理系统 社团信息维护 活动发布报名 成员审核与公告发布平台源码+论文+PPT+讲解
  • Git(三) Git 分支工作流管理模型探究与实践
  • 电容篇---常见作用
  • Apache Iceberg与Hive集成:分区表篇
  • StarRocks Community Monthly Newsletter (May)
  • JavaScript中Date对象用法详解
  • 深入实践Caffeine+Redis两级缓存架构:从原理到高可用设计
  • 「Linux文件及目录管理」文件及目录操作类命令
  • Grdle版本与Android Gradle Plugin版本, Android Studio对应关系
  • OpenWrt:交叉编译openssl
  • redis缓存的基础知识
  • DBSCAN(Density-Based Spatial Clustering of Applications with Noise)基于密度的聚类方法介绍
  • 移动应用开发实验室web组大一下期末考核题解
  • 【arXiv2024】时间序列|TimesFM-ICF:即插即用!时间序列预测新王者!吊打微调!
  • 如何用ai设计测试
  • WebStorm编辑器侧边栏
  • NodeJS的fs模块的readFile和createReadStream区别以及常见方法
  • Nacos 实战指南:服务注册、分级与环境隔离
  • 第二十六周:序列化和反序列化
  • 变幻莫测:CoreData 中 Transformable 类型面面俱到(三)
  • 【Git】代码托管服务
  • 【一天一个知识点】RAG 是“问答脑”,智能体是“有行动力的大脑”
  • AndroidStudio下载的SDK没有tool目录,或者想要使用uiautomatorviewer工具