d3plus-shape
Version:
Fancy SVG shapes for visualizations
21 lines • 990 B
JavaScript
/**
@function path2polygon
@desc Transforms a path string into an Array of points.
@param {String} path An SVG string path, commonly the "d" property of a <path> element.
@param {Number} [segmentLength = 50] The length of line segments when converting curves line segments. Higher values lower computation time, but will result in curves that are more rigid.
@returns {Array}
*/
export default (function (path) {
var segmentLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50;
if (typeof document === "undefined") return [];
var svgPath = document.createElementNS("http://www.w3.org/2000/svg", "path");
svgPath.setAttribute("d", path);
var len = svgPath.getTotalLength();
var NUM_POINTS = len / segmentLength < 10 ? len / 10 : len / segmentLength;
var points = [];
for (var i = 0; i < NUM_POINTS; i++) {
var pt = svgPath.getPointAtLength(i * len / (NUM_POINTS - 1));
points.push([pt.x, pt.y]);
}
return points;
});