在变更路径我有SVG图形的一组固定的(围绕hundered),每个包含单一的<path>
。想象一下,任何数量的这些形状都放置在新文档的任何位置。然后我应用任何以下操作中的每个形状多次我想:识别SVG文档
- 旋转
- 镜像(垂直/水平)
- 量表(X/Y)
这些然后将操作呈现到新路径(不使用任何svg操作,如transform属性)。基本上,这是一个Adobe Illustrator save-as-svg的输出。
给定一个任意此类文件,我想找到反向工程的算法到这个形状和操作的列表,像
- 形船:位置(4,5),旋转20deg,比例×50%Y 100%,反映v =是,H =没有
- 形状汽车:等...
这将有可能强加在文档中的形状后,各自命名为“原始“形状使用图层ID,但我想尽可能地避免这种情况。
我首先想到的是让某种散列的形状来识别它们(可能是X哈希值,每个镜像操作),然后使用两个参考点的形状找到旋转。这个版本可以用来测量形状中各点之间所有距离的绝对值,并用这个距离除点之间的每个距离,得到一个唯一的散列。尽管Scale x/y要求似乎把这个想法搞得很糟糕。不幸的是我不能放弃这个要求。
如何为每个方程选择P'_k和P_k?据我了解,它们应该对应于变换形状中的相同点,以使方程可解?我可能很幸运,起点总是相同的(用svg中的M标记),但在其他任何情况下,我是否必须在变换后的形状中选择一个随机起点,然后遍历原始中的所有点直到我找到相应的点? whoosh我希望我的问题很明确 – Tewr
是的,你需要找到相应的点。尝试每一个作为起点将工作。即使您选择了错误的方程,也可以解决这个方程,但您很容易识别出正确的选择,因为它最合适,即残差最小。 – pentadecagon