【问题标题】:SVG "Smooth curve" clarificationSVG“平滑曲线”说明
【发布时间】:2014-11-23 06:36:41
【问题描述】:

在 SVG 的 W3C standard 中,我读到了“S”和“s”:

(x2 y2 x y)+

从当前点到 (x,y) 绘制三次贝塞尔曲线。 假设第一个控制点是上一个命令相对于当前点的第二个控制点的反射。(如果没有上一个命令或者如果上一个命令不是C,c , S 或 s,假设第一个控制点与当前点重合。) (x2,y2) 是第二个控制点(即曲线末端的控制点)。 S(大写)表示后面跟着绝对坐标; s(小写)表示将跟随相对坐标。 可以指定多组坐标来绘制多边形。在命令结束时,新的当前点将成为多边形中使用的最终 (x,y) 坐标对。

在多边形的情况下,“当前点”或“上一个命令”是否在此子路径期间发生变化?

换句话说,如果指定了多组坐标,隐式计算的第一个控制点是否会在 S 或 s 子路径期间发生变化?

标准说“在 [S 或 s] 命令的 结束处”,所以我怀疑不是。

【问题讨论】:

    标签: svg language-lawyer bezier


    【解决方案1】:

    我不确定我是否理解您的要求,或者您所说的“改变”是什么意思。

    下面的例子:

    M 0,0 S 100,100, 120,120, 200,200, 220,220
    

    被认为是以下的简写:

    M 0,0 S 100,100, 120,120 S 200,200, 220,220
    

    因此,当您到达第二组 S 坐标(200 秒)时,“上一个命令”被认为是“S 100,100 120,120”,不是“M 0,0” .

    这就是你要问的吗?

    【讨论】:

    • 对不起,我应该添加一个示例。考虑M 0,0 S 100,100, 120,120 S 200,200, 220,220, 250,260 300,300。用于计算250,260 300,300 的第一个控制点的“上一个命令”是什么。
    • "S 200,200,220,200" 是前面的命令。为最后一个 S 计算的第一个控制点将为 240,240,即 200,200 “反映”过去 220,220。因此,您示例中的最后一个命令相当于“C 240,240 250,260, 300,300”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 2021-05-25
    • 1970-01-01
    相关资源
    最近更新 更多