一、什么是svg的坐标零碎

家喻户晓,数学上的坐标零碎,大部分是指 笛卡尔直角坐标系

并且:x轴 向右,y轴 向上,角度为 逆时针

在svg中,坐标零碎同样也是笛卡尔直角坐标系,x轴 向右

然而:y轴向下,角度为 顺时针

二、什么是svg的坐标系?

在svg中,共有4种坐标系:
  • 用户 坐标系
  • 本身 坐标系
  • 前驱 坐标系
  • 参考 坐标系

咱们来一一理解一下

1、用户坐标系

即世界坐标系,指的是最原始的svg坐标系

2、本身坐标系

图形 元素或 分组 自身具备 的坐标系

3、前驱坐标系

父级 坐标系。
本身坐标系 不产生变换 的状况下,和前驱坐标系是重合的。

如下图,rect 变换后本身坐标系是绿色局部,前驱坐标系即svg的坐标系(与用户坐标系重合)

4、参考坐标系

是一种 绝对 的概念,没有特指哪个坐标系。
比方下面的图中,用户坐标系也能够作为 rect 的参考坐标系,只是坐标值要依据理论状况从新计算。

三、综合实例

从头到尾顺一下思路

  • svg的坐标系为 OA ,也是原始的用户坐标系
  • 分组B的坐标系为 OB ,translate(0, 50) 后,OB坐标系 整体下移50像素,留神是OB坐标系自身下移,而不是OB的内容下移
  • rect C的坐标系为OC ,宽高是本人的属性,x、y则是绝对于本身坐标系OC的坐标值,OC没有变换,所以与父级坐标系重合
  • rect D的坐标系为 OD ,细节解释同OC
  • 因为C、D没有translate,所以OB、OC、OD重合
在这里就能够了解上一篇的疑难了:

上一篇的 rect 的 x 、y是绝对 本身坐标系的值,因为本身没有变换,所以rect坐标系与父级坐标系重合,也就是绝对父级 g 对应坐标系的值

重要的一点:transform 是 基于前驱坐标系本身坐标系 的变换,所以变换是有先后顺序的,程序扭转,变换后果就会不同,有趣味的能够看下一篇的简略例子