- From: Paul LeBeau via GitHub <sysbot+gh@w3.org>
- Date: Fri, 16 Sep 2016 10:14:35 +0000
- To: public-svg-issues@w3.org
BigBadaboom has just created a new issue for
https://github.com/w3c/svgwg:
== Clarify behaviour of getPointAtLength() and
getPathSegmentAtLength() at discontinuities. ==
https://svgwg.org/svg2-draft/single-page.html#types-__svg__SVGGeometryElement__getPointAtLength
https://svgwg.org/specs/paths/#InterfaceSVGPathElement
I think we need to enhance the algorithm for `getPointAtLength()` to
clarify which segment is considered current when calculating the
coordinates. Browsers have some differences in this regard.
Consider the following test:
```
<svg>
<path id="mypath"
d="M50,50 L150,50
M50,100 L150,100"/>
</svg>
var mypath = document.getElementById("mypath");
var lens = [0, 100];
for (var i=0; i<lens.length; i++) {
var p = mypath.getPointAtLength(lens[i]);
console.log("Point at length "+lens[i]+" = "+p.x+","+p.y);
console.log("PathSeg at length "+lens[i]+" =
"+mypath.getPathSegAtLength(lens[i]));
}
```
https://jsfiddle.net/yn6t6gr0/1/
At length 100,
Chrome returns (150,50) and path seg 1
IE11 returns (50,100) and path seg 1
Firefox returns (50,100) and path seg 1.
I'm not sure which of the two alternative points should be considered
the more "correct", but browsers ought to be consistent. Also whatever
coords are returned should match with the segment returned at that
point. Chrome is consistent here, but the other two are not.
If, for example, it is decided that path segments are considered to be
start-inclusive and end-exclusive, then the FF and IE coords (50,100)
would make sense, but then the path seg probably ought to be 2 or 3
in that case.
Finally, in the case of a length like 0, should that point be
considered in the "move" path segment, or in the path segment
immediately following it? Does it make sense for it to jump to the
next segment at length=+epsilon?
Please view or discuss this issue at
https://github.com/w3c/svgwg/issues/282 using your GitHub account
Received on Friday, 16 September 2016 10:14:46 UTC