7

在执行"s"(相对三次贝塞尔弧)和"t"(相对二次贝塞尔弧)命令时,隐式定义的控制点的坐标是否用作下一个相对坐标的基础?

换句话说,考虑以下三次弧:

三次圆弧示例

  • cp当前点
  • ip隐式控制点计算镜像来自前一个弧的最后一个控制点
  • ep显式控制点
  • fp弧的终点

应该是ep用作基础的相对坐标ip(隐式点)还是相对于cp(路径的当前点)?

在官方文档中,我发现这不清楚,并且在这些情况下没有使用相对坐标的示例。

4

2 回答 2

11

规则是

  1. 使用相对模式时,坐标相对于命令开头的当前点

  2. 在命令“链”的情况下,当给出多个坐标而不重复命令时,基点在每次重复后更新

例如简单路径

m 100,100 100,0 0,100 -100,0 0,-100

描述从 (100,100) 到 (200,200) 的正方形

简单的相对路径

l如果为“m”命令提供了多个坐标对,则以红色显示的“line-to”命令是隐含的)

需要注意的重要一点是,坐标的相对“基础”在每个转折点都会更新。这在文档中有些欺骗性,因为m命令的语法被描述为接受(x,y)+参数,因此读者可能会被欺骗认为相对基数只会在整个点序列的末尾发生变化。

现在让我们考虑贝塞尔三次路径

m 100,100 c 25,25 75,25 100,0 s 25,125 0,100 -75,-25 -100,0

贝塞尔弧示例

通过镜像最后一个控制点自动计算两个红色控制点。红色s命令是隐含的,因为后面跟着四个点s

对于三次贝塞尔圆弧命令,两个控制点和终点相对于同一起点(它们与顺序中的前一个点无关),但在每个圆弧处,更新相对坐标计算的基点。

于 2013-04-07T14:47:59.387 回答
2

此处的文档指出,大写的S需要绝对坐标,而小写的 s需要相对坐标。T(绝对)和t(相对)类似。

编辑- 相对于当前点 - 抱歉,应该是明确的。与上面链接的同一文件包括以下内容:

对于命令的相对版本,所有坐标值都相对于命令开始处的当前点

于 2013-04-07T09:10:02.693 回答