Raphael / SVG路径定义是否始终以'M'开头? (如果没有,这样的路径的起源总是0,0?)

时间:2013-03-05 18:37:52

标签: javascript svg raphael

我正在研究一些类似插件的代码,以简化将Raphael路径移动到固定位置的过程。

通常,Raphael路径的第一部分(使用基于SVG语法的语法)是“M”moveto命令,用于定义路径的原点。

两个密切相关的问题:

  1. 假设任何路径都以“M”moveto命令开头是否合理? (我怀疑这个答案是'不')
  2. 假设Q1没有'不'。在上面,遇到一个不以'M'(somePath.attr(path)[0][0] != 'M')开头的Raphael路径数组时,可以假设这条路径的起点始终是0,0吗?因此,0,0的任何移动都来自过去的转换,因此将在somePath.attr(transform)中描述?
  3. 从Raphael的文档中,看起来Path数组的规范中没有任何内容与2相矛盾,但在做出假设之前总是值得检查意外情况。


    换句话说,是否有任何情况下此函数不会返回Raphael路径原点的正确X和Y坐标(假设它传递了有效Raphael的somePath.attr('path')的输出路径):

    function getPathOrigin (path) {
        if (path[0][0] == 'M') {
            return {x: path[0][1], y: path[0][2]}
        } else {
            return {x: 0, y: 0}
        }
    }
    

1 个答案:

答案 0 :(得分:3)

根据the specification,路径必须以moveto命令开头。