我正在处理SVG地图,其中包含text
个元素的lot。问题是,旧的/源文件是多年前在Adobe Illustrator中生成的,由于某种原因,该文件将这些元素打印为例如:
<text transform="matrix(1 0 0 1 604.9754 765.0283)">4</text>
(前四个参数(1、0、0、1)永远不变。)
我想实现的是将其翻译成类似的东西
<text x='123' y='456'>4</text>
我已经设法使用正则表达式收集了所有需要的值(文本内容和最后两个转换参数),但是我不知道下一步该怎么做。我还发现,
[matrix())>变换函数以六个值的变换矩阵形式指定一个变换。 matrix(a,b,c,d,e,f)等同于应用变换矩阵:
\\ begin {pmatrix} a&c&e \\ b&d&f \\ 0&0&1 \ end {pmatrix}
通过以下矩阵等式将坐标从先前的坐标系映射到新的坐标系:
\\ begin {pmatrix} x _ {\ mathrm {newCoordSys}} \\ y _ {\ mathrm {newCoordSys}} \\ 1 \ end {pmatrix} = \ begin {pmatrix} a&c&e \\ b&d& f \\ 0&0&1 \ end {pmatrix} \ begin {pmatrix} x _ {\ mathrm {prevCoordSys}} \\ y _ {\ mathrm {prevCoordSys}} \\ 1 \ end {pmatrix} = \ begin {pmatrix} a x _ {\ mathrm {prevCoordSys}} + c y _ {\ mathrm {prevCoordSys}} + e \\ b x _ {\ mathrm {prevCoordSys}} + d y _ {\ mathrm {prevCoordSys}} + f \\ 1 \ end { pmatrix}
所以我的问题是:
我如何转换
这些矩阵将值转换为X,Y坐标?我正在处理SVG地图,其中包含许多文本元素。问题是,旧的/源文件是几年前在Adobe Illustrator中生成的,出于某种原因,这些文件将这些元素打印为...,
我发现,matrix(1 0 0 1 100px 200px)
等效于translateX(100px) translateY(200px)
,这意味着这些值实际上是确切值