@yr/monotone-cubic-spline
Advanced tools
| language: node_js | ||
| node_js: | ||
| - "4" | ||
| - "6" | ||
| sudo: false |
+34
-24
| 'use strict'; | ||
| /** | ||
| * Convert a series of points to a monotone cubic spline | ||
| * Algorithm based on https://github.com/mbostock/d3 | ||
| * https://github.com/yr/monotone-cubic-spline | ||
| * @copyright Yr | ||
| * @license MIT | ||
| */ | ||
| var ε = 1e-6; | ||
@@ -15,7 +23,7 @@ | ||
| var p = _points[1], | ||
| p0 = _points[0], | ||
| pts = [], | ||
| t = tgts[1], | ||
| t0 = tgts[0]; | ||
| var p = _points[1]; | ||
| var p0 = _points[0]; | ||
| var pts = []; | ||
| var t = tgts[1]; | ||
| var t0 = tgts[0]; | ||
@@ -27,4 +35,4 @@ // Add starting 'M' and 'C' points | ||
| for (var i = 2, n = tgts.length; i < n; i++) { | ||
| var _p = _points[i], | ||
| _t = tgts[i]; | ||
| var _p = _points[i]; | ||
| var _t = tgts[i]; | ||
@@ -37,2 +45,3 @@ pts.push([_p[0] - _t[0], _p[1] - _t[1], _p[0], _p[1]]); | ||
| /** | ||
@@ -62,2 +71,3 @@ * Slice out a segment of 'points' | ||
| /** | ||
@@ -72,4 +82,4 @@ * Convert 'points' to svg path | ||
| for (var i = 0; i < points.length; i++) { | ||
| var point = points[i], | ||
| n = point.length; | ||
| var point = points[i]; | ||
| var n = point.length; | ||
@@ -98,10 +108,10 @@ if (!i) { | ||
| function tangents(points) { | ||
| var m = finiteDifferences(points), | ||
| n = points.length - 1; | ||
| var m = finiteDifferences(points); | ||
| var n = points.length - 1; | ||
| var tangents = [], | ||
| a = undefined, | ||
| b = undefined, | ||
| d = undefined, | ||
| s = undefined; | ||
| var tangents = []; | ||
| var a = void 0, | ||
| b = void 0, | ||
| d = void 0, | ||
| s = void 0; | ||
@@ -125,5 +135,5 @@ for (var i = 0; i < n; i++) { | ||
| for (var i = 0; i <= n; i++) { | ||
| s = (points[Math.min(n, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i])); | ||
| tangents.push([s || 0, m[i] * s || 0]); | ||
| for (var _i = 0; _i <= n; _i++) { | ||
| s = (points[Math.min(n, _i + 1)][0] - points[Math.max(0, _i - 1)][0]) / (6 * (1 + m[_i] * m[_i])); | ||
| tangents.push([s || 0, m[_i] * s || 0]); | ||
| } | ||
@@ -150,7 +160,7 @@ | ||
| function finiteDifferences(points) { | ||
| var m = [], | ||
| p0 = points[0], | ||
| p1 = points[1], | ||
| d = m[0] = slope(p0, p1), | ||
| i = 1; | ||
| var m = []; | ||
| var p0 = points[0]; | ||
| var p1 = points[1]; | ||
| var d = m[0] = slope(p0, p1); | ||
| var i = 1; | ||
@@ -157,0 +167,0 @@ for (var n = points.length - 1; i < n; i++) { |
+8
-10
| { | ||
| "name": "@yr/monotone-cubic-spline", | ||
| "description": "Convert a series of points to a monotone cubic spline", | ||
| "version": "1.0.0", | ||
| "version": "1.0.1", | ||
| "author": "Alexander Pope <alexander.pope@nrk.no>", | ||
@@ -9,7 +9,7 @@ "dependencies": { | ||
| "devDependencies": { | ||
| "buddy": "3.1.x", | ||
| "buddy": "5.0.x", | ||
| "buddy-plugin-babel": "6.7.x", | ||
| "expect.js": "*", | ||
| "mocha": "*", | ||
| "mocha-phantomjs": "*", | ||
| "transfigure-babel": "6.1.x" | ||
| "mocha-phantomjs": "*" | ||
| }, | ||
@@ -28,11 +28,9 @@ "main": "src/index.js", | ||
| { | ||
| "input": "src/index.js", | ||
| "output": "test/lib.js", | ||
| "boilerplate": true, | ||
| "bootstrap": true | ||
| }, | ||
| { | ||
| "input": "src", | ||
| "output": ".", | ||
| "modular": false | ||
| }, | ||
| { | ||
| "input": "src/index.js", | ||
| "output": "test/lib.js" | ||
| } | ||
@@ -39,0 +37,0 @@ ] |
+6
-3
@@ -0,1 +1,4 @@ | ||
| [](https://npmjs.org/package/@yr/monotone-cubic-spline) | ||
| [](https://travis-ci.org/YR/monotone-cubic-spline?branch=master) | ||
| Convert a series of points to a monotone cubic spline (based on D3.js implementation) | ||
@@ -6,5 +9,5 @@ | ||
| ```js | ||
| const spline = require('@yr/monotone-cubic-spline') | ||
| , points = spline.points([[0,0], [1,1], [2,1], [3,0], [4,0]] | ||
| , svgPath = spline.svgPath(points); | ||
| const spline = require('@yr/monotone-cubic-spline'); | ||
| const points = spline.points([[0,0], [1,1], [2,1], [3,0], [4,0]]; | ||
| const svgPath = spline.svgPath(points); | ||
@@ -11,0 +14,0 @@ console.log(svgPath); |
+26
-18
| 'use strict'; | ||
| /** | ||
| * Convert a series of points to a monotone cubic spline | ||
| * Algorithm based on https://github.com/mbostock/d3 | ||
| * https://github.com/yr/monotone-cubic-spline | ||
| * @copyright Yr | ||
| * @license MIT | ||
| */ | ||
| const ε = 1e-6; | ||
@@ -14,7 +22,7 @@ | ||
| let p = points[1] | ||
| , p0 = points[0] | ||
| , pts = [] | ||
| , t = tgts[1] | ||
| , t0 = tgts[0]; | ||
| let p = points[1]; | ||
| let p0 = points[0]; | ||
| let pts = []; | ||
| let t = tgts[1]; | ||
| let t0 = tgts[0]; | ||
@@ -26,4 +34,4 @@ // Add starting 'M' and 'C' points | ||
| for (let i = 2, n = tgts.length; i < n; i++) { | ||
| const p = points[i] | ||
| , t = tgts[i]; | ||
| const p = points[i]; | ||
| const t = tgts[i]; | ||
@@ -69,4 +77,4 @@ pts.push([p[0] - t[0], p[1] - t[1], p[0], p[1]]); | ||
| for (let i = 0; i < points.length; i++) { | ||
| const point = points[i] | ||
| , n = point.length; | ||
| const point = points[i]; | ||
| const n = point.length; | ||
@@ -95,7 +103,7 @@ if (!i) { | ||
| function tangents (points) { | ||
| const m = finiteDifferences(points) | ||
| , n = points.length - 1; | ||
| const m = finiteDifferences(points); | ||
| const n = points.length - 1; | ||
| let tangents = [] | ||
| , a, b, d, s; | ||
| let tangents = []; | ||
| let a, b, d, s; | ||
@@ -143,7 +151,7 @@ for (let i = 0; i < n; i++) { | ||
| function finiteDifferences (points) { | ||
| let m = [] | ||
| , p0 = points[0] | ||
| , p1 = points[1] | ||
| , d = m[0] = slope(p0, p1) | ||
| , i = 1; | ||
| let m = []; | ||
| let p0 = points[0]; | ||
| let p1 = points[1]; | ||
| let d = m[0] = slope(p0, p1); | ||
| let i = 1; | ||
@@ -150,0 +158,0 @@ for (let n = points.length - 1; i < n; i++) { |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
9840
7.8%7
16.67%271
5.45%23
15%1
Infinity%