1

我在论坛和当然在这里搜索了很多,但我还没有找到一个明确的解决方案。我发现了类似的问题,但它不起作用。

当我画一个矩形时,Inkscape 会给出准确的 x 和 y 位置。但是,当我旋转时,它会将 x 和 y 位置更改为难以理解的值。例如:

<rect
   id="rect2985"
   width="100"
   height="100"
   x="100"
   y="100" />

没关系,但是当旋转时,看看“transform”属性和x,y:

<rect
   id="rect2985"
   width="100"
   height="100"
   x="4.9038105"
   y="154.90381"
   transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" />

我如何计算从 x=4.9... 和 y=154.9... 或矩阵值获得 x=100 y=100?

4

1 回答 1

1

如果要保留这些x=100 y=100值,则必须计算不同的转换矩阵。在正方形中心上的旋转相当于 3 次变换:

 translate(-(x + centerX), -(y + centerY))
 rotate(angle)
 translate(x + centerX, y + centerY) 

在您的情况下,转换属性将类似于:

 transform = "translate(150, 150) rotate(45) translate(-150, -150)"

我不确定您是否对数学感兴趣,或者只是想要转换矩阵。如果你只想要最终的矩阵值,你可以看看这个小提琴:http: //jsfiddle.net/mihaifm/PQvBj/

我曾经getCTM获取矩阵a,b,c,d,e,f值。

最终结果(假设旋转 45 度):

<rect
   id="rect4"
   width="100"
   height="100"
   x="100"
   y="100"
   transform="matrix(0.7071067811865476, 0.7071067811865475, -0.7071067811865475, 0.7071067811865476, 150, -62.132034355964265)" />
于 2012-11-06T20:52:55.143 回答