Contact me: hankecnc@gmail.com

旋转矢量/图像 #147

推推 grbl 3年前 (2023-02-03) 436次浏览
关闭
 打开了这个问题 2017 年 2 月 10 日 · 54条评论
关闭

旋转矢量/图像#147

 打开了这个问题 2017 年 2 月 10 日 · 54条评论

评论

旋转矢量/图像 #147
 评论了 2017 年 2 月 10 日  

能够调整文档在工作区中的旋转。

旋转矢量/图像 #147  加了 功能要求 标签 2017 年 2 月 10 日
旋转矢量/图像 #147
合作者

@tbfleming这很难实施吗?
我试过https://webglfundamentals.org/webgl/lessons/webgl-2d-rotation.html但似乎在旋转时缩放。可能与 3d 视口上的 2d 变换有关。

旋转矢量/图像 #147
成员

@jorgerobles缩放和旋转作为单独的字段彼此相处,但是当您添加旋转字段时数学会变得复杂,因为所有 3 个字段都相互作用。简单的方法是切换到单个矩阵:

  • 删除文档的翻译和缩放字段并用矩阵替换它们。单个矩阵将处理平移、缩放、旋转和倾斜。gl-matrix 具有帮助解决此问题的功能。
  • 重写文档缓存和工作区中处理文档边界的代码;我目前使用的方法使用与旋转不兼容的优化。
  • 更改顶点着色器以使用矩阵制服而不是平移和缩放制服
  • 更新工作区中的代码,该代码操纵平移和缩放以操纵矩阵
  • 更改rawPathsToClipperPaths为使用矩阵而不是单独的平移和缩放字段。这将使所有凸轮的矢量操作正常工作。
  • 将旋转添加到 lw.raster-to-gcode;如果我们有第二个人处理此代码,那就太好了。
  • 添加代码以更新旧文件中的文档。
旋转矢量/图像 #147
合作者

谢谢!..似乎令人生畏?

旋转矢量/图像 #147
作者

(:总是有“LW 不是 CAD 包”的论点(;
简单定位是的,旋转可能算作“宁愿使用 cad”

旋转矢量/图像 #147
作者

移动、旋转和缩放是放置所需的基本操作。即使能够将设计顺时针或逆时针旋转 90 度也是有益的。

如果用户只是想旋转设计以适应他们拥有的材料的自由区域,则他们不必跳回 CAD 包。

旋转矢量/图像 #147
成员

90 度简化了事情。对于向量,编辑 rawPaths;您无需触摸着色器。对于位图,通过转换运行它们,然后将它们存储回 dataUrl。

旋转矢量/图像 #147
成员

您还必须调整比例并进行平移以进行补偿。

旋转矢量/图像 #147
合作者

强大的图像处理https://www.npmjs.com/package/jimp

旋转矢量/图像 #147

@jorgerobles这也会处理向量吗?

旋转矢量/图像 #147
合作者

好像没有。我只是发布作为参考。

旋转矢量/图像 #147
成员

@domenic-d我会处理向量。@jorgerobles正在寻找一种处理图像的方法,而不依赖于单独的平移、缩放、旋转字段,这些字段将会消失。我将用矩阵替换它们。

旋转矢量/图像 #147
成员
纠结 评论了 2017 年 6 月 1 日  

这就是为什么我们必须转向矩阵进行旋转的原因。我在上面说过“当你添加一个旋转场时,数学会变得复杂,因为所有 3 个场都相互作用。” 我给它涂了糖衣。在某些情况下,数学变得无法解决。这是其中一个案例。

旋转矢量/图像 #147

如果我们有单独的旋转和缩放字段,那么我们必须决定哪个先发生。如果我们缩放原始对象然后旋转它,那么A可以变成B,但是B不能变成A。如果我们先旋转,那么B可以变成A,但是A不能变成B。两种方法都增加了对用户界面的限制。例如,如果我们先旋转,那么用户将无法旋转他们已经缩放过的对象。

矩阵不限制顺序。用户可以按任意顺序自由旋转和缩放。一个主要的缺点是 lw.raster-to-gcode 不理解它。@jorgerobles将不得不在 lw.raster-to-gcode 之前预处理图像或对 lw.raster-to-gcode 进行严重的手术。

旋转矢量/图像 #147
合作者

我会去预处理,甚至我们必须存储原始和转换后的,会更好。
我希望 @lautr3k 可以帮我们一把……你在吗??

旋转矢量/图像 #147
合作者

@tbfleming正如我们之前所说,请做一个分支,我希望不会,但这可能是一项长期任务。

旋转矢量/图像 #147
成员
纠结 评论了 2017 年 6 月 2 日  

我刚刚推送了一个新分支:rotate。它现在可以旋转矢量。我还没有将图像的工作区处理移植到矩阵。图像显示当前已损坏。

待办事项(我):

  • 修复工作区图像支持(加载、加载 SVG、显示、选择)
  • 修复 dxf 导入
  • 将旧工作区文件转换为新格式
旋转矢量/图像 #147

@tbfleming感谢您的解释。当您需要执行一些特定测试时请告诉我,我会立即着手进行。

旋转矢量/图像 #147
成员
纠结 评论了 2017 年 6 月 2 日  

@domenic-d继续测试那里有什么。暂时不要执行以下操作:

  • 加载图像
  • 加载包含任何图像的 SVG
  • 加载 DXF
  • 加载旧的工作区文件
旋转矢量/图像 #147
domenic-d 评论了 2017 年 6 月 2 日  

很高兴看到此功能进入 LW。
一些反馈:

1:键入旋转值效果很好。
2:点击增加/减少箭头有时会超出点击次数。无法弄清楚如何始终如一地复制它。
3:取消选择文档,然后重新选择它,将其旋转设置回零。保留其旋转值将很有用,以便可以将其重置为原始方向。
4:值窗口在应用旋转时不断移动,这让它有点棘手,尤其是在使用增加/减少箭头时。
5:尺寸值随文档旋转而变化。我对此有两种看法。一方面,最好不要改变大小(因为旋转不应该改变它),但它的表达方式(如 x&y)让它显示变化是有意义的。

旋转矢量/图像 #147
成员

3 棘手;没有旋转值,因此在选择变化时会产生一个幻影。当字段发生变化时,它会根据两个值的差值计算一个旋转矩阵,然后将该矩阵乘以每个选定对象的单独矩阵。

旋转矢量/图像 #147

是否可以为随身携带的物体计算初始世界旋转矩阵。如果用户想“重置”旋转,那么应用这个矩阵?

旋转矢量/图像 #147
成员

大小同上;从来没有一个大小成员;它总是即时计算它。

旋转矢量/图像 #147
成员

不,这会产生我上面提到的数学问题。

旋转矢量/图像 #147

谢谢托德。在 LW 中拥有此功能是一个巨大的好处。如果用户必须注视旋转或什至重新加载文档,那就这样吧。

旋转矢量/图像 #147
合作者
jorgerobles 评论了 2017 年 6 月 4 日  

我几乎完成了光栅变换的第一种方法。

未决错误

  • 图像偏移
  • A轴变形

旋转矢量/图像 #147

旋转矢量/图像 #147

@tbfleming请看看,谢谢?

旋转矢量/图像 #147
成员

@jorgerobles:我在创建上下文后添加了这个以揭示正在发生的事情:

ctx.fillStyle = 'black';
ctx.fillRect(0,0,w,h);

旋转矢量/图像 #147

它将 raster-to-gcode 输出的左下角与图像的转换角之一对齐。您需要改为中心到中心对齐。

旋转矢量/图像 #147
合作者

Ugg 搞不定。尝试在 transform2[4] 和 [5] 上进行翻译,但 nup。

旋转矢量/图像 #147
成员

@jorgerobles我为你修复了那部分。

旋转矢量/图像 #147
合作者
jorgerobles 评论了 2017 年 6 月 6 日  

@tbfleming我已经将光栅 A 轴变换与 dev-es6 分支行为相匹配,也许矢量偏移不是?(pic 和 vector 在文档上的原点相同,附上的照片显示了 gcode 输出)

147-vector_offset.json.txt 文件

旋转矢量/图像 #147

tbfleming 添加了引用此问题的提交 2017 年 6 月 6 日

旋转矢量/图像 #147
成员

@jorgerobles固定的。

旋转矢量/图像 #147
成员

哎呀。这引入了一个新错误:激光间距将关闭。

要解决此问题,请不要在参数中使用 axisAFactor。而是缩放输出 gcode。

旋转矢量/图像 #147
合作者

降低 Y ppi,还是后处理?

旋转矢量/图像 #147
成员

后期处理

旋转矢量/图像 #147
成员

测试时发现了一个不同的错误。我在矢量对象上使用了 del 快捷键。这让父母的孩子们没有受到影响,这导致了各种各样的问题。

旋转矢量/图像 #147
合作者

好的,将深入研究

旋转矢量/图像 #147
合作者

喜欢 (0)