我有一系列在 inkscape(或类似的矢量图形应用程序)中创建的 SVG 文件。
当 SVG 中的元素在屏幕上移动时,编辑工具会对元素进行翻译(显然他们这样做是出于效率原因)。这些工具基于矩阵设置每个被拖动、调整大小等元素的转换。
问题是,如果我尝试从 javascript 中对 SVG 中的元素应用旋转,则旋转的应用会覆盖转换。这导致的不仅仅是旋转,因为矩阵被旋转替换了。
我假设我需要检索矩阵,使用我希望的旋转更新矩阵,然后重新应用矩阵。
有人可以解释一下在尝试将旋转增加几分之一度时如何做到这一点(由于执行动画而产生的派别)。
我在这里的 JSFiddle 中创建了一个示例。虽然不清楚发生了什么,但我已经在本地测试了代码。通过萤火虫检查时,我可以看到变换属性被替换为旋转(r)。
顺便说一句,我一直在阅读 w3 网站,但我只找到了这个。虽然它深入讨论了矩阵,但它没有提供任何示例。我发现很难阅读,因为我上次学习矩阵是在 80 年代。但在我看来,我可能需要做一些矩阵乘法,并可能使用 cos 和 sin。有点希望我不这样做,因为我不确定在制作动画时使用这种方法对性能的影响。
顺便说一句,我已经查看了从 SVG 中去除转换的工具。然而,由于我希望使用的 SVG 文件是另一个项目的一部分,我宁愿避免这样做。它还会在未来产生问题,因为我希望让人们创建自己的 SVG 以与我正在编写的软件一起使用。