add lisp packages
This commit is contained in:
27
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/LICENSE
generated
vendored
Normal file
27
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
Copyright 2010-2016 Mike Bostock
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the author nor the names of contributors may be used to
|
||||
endorse or promote products derived from this software without specific prior
|
||||
written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
40
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/README.md
generated
vendored
Normal file
40
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/README.md
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
# d3-polygon
|
||||
|
||||
This module provides a few basic geometric operations for two-dimensional polygons. Each polygon is represented as an array of two-element arrays [[<i>x1</i>, <i>y1</i>], [<i>x2</i>, <i>y2</i>], …], and may either be closed (wherein the first and last point are the same) or open (wherein they are not). Typically polygons are in counterclockwise order, assuming a coordinate system where the origin ⟨0,0⟩ is in the top-left corner.
|
||||
|
||||
## Installing
|
||||
|
||||
If you use NPM, `npm install d3-polygon`. Otherwise, download the [latest release](https://github.com/d3/d3-polygon/releases/latest). You can also load directly from [d3js.org](https://d3js.org), either as a [standalone library](https://d3js.org/d3-polygon.v1.min.js) or as part of [D3](https://github.com/d3/d3). AMD, CommonJS, and vanilla environments are supported. In vanilla, a `d3` global is exported:
|
||||
|
||||
```html
|
||||
<script src="https://d3js.org/d3-polygon.v1.min.js"></script>
|
||||
<script>
|
||||
|
||||
var hull = d3.polygonHull(points);
|
||||
|
||||
</script>
|
||||
```
|
||||
|
||||
## API Reference
|
||||
|
||||
<a href="#polygonArea" name="polygonArea">#</a> d3.<b>polygonArea</b>(<i>polygon</i>) [<>](https://github.com/d3/d3-polygon/blob/master/src/area.js#L1 "Source Code")
|
||||
|
||||
Returns the signed area of the specified *polygon*. If the vertices of the polygon are in counterclockwise order (assuming a coordinate system where the origin ⟨0,0⟩ is in the top-left corner), the returned area is positive; otherwise it is negative, or zero.
|
||||
|
||||
<a href="#polygonCentroid" name="polygonCentroid">#</a> d3.<b>polygonCentroid</b>(<i>polygon</i>) [<>](https://github.com/d3/d3-polygon/blob/master/src/centroid.js#L1 "Source Code")
|
||||
|
||||
Returns the [centroid](https://en.wikipedia.org/wiki/Centroid) of the specified *polygon*.
|
||||
|
||||
<a href="#polygonHull" name="polygonHull">#</a> d3.<b>polygonHull</b>(<i>points</i>) [<>](https://github.com/d3/d3-polygon/blob/master/src/hull.js#L23 "Source Code")
|
||||
|
||||
<a href="http://bl.ocks.org/mbostock/6f14f7b7f267a85f7cdc"><img src="https://raw.githubusercontent.com/d3/d3-polygon/master/img/hull.png" width="250" height="250"></a>
|
||||
|
||||
Returns the [convex hull](https://en.wikipedia.org/wiki/Convex_hull) of the specified *points* using [Andrew’s monotone chain algorithm](http://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain). The returned hull is represented as an array containing a subset of the input *points* arranged in counterclockwise order. Returns null if *points* has fewer than three elements.
|
||||
|
||||
<a href="#polygonContains" name="polygonContains">#</a> d3.<b>polygonContains</b>(<i>polygon</i>, <i>point</i>) [<>](https://github.com/d3/d3-polygon/blob/master/src/contains.js#L1 "Source Code")
|
||||
|
||||
Returns true if and only if the specified *point* is inside the specified *polygon*.
|
||||
|
||||
<a href="#polygonLength" name="polygonLength">#</a> d3.<b>polygonLength</b>(<i>polygon</i>) [<>](https://github.com/d3/d3-polygon/blob/master/src/length.js#L1 "Source Code")
|
||||
|
||||
Returns the length of the perimeter of the specified *polygon*.
|
||||
150
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/dist/d3-polygon.js
generated
vendored
Normal file
150
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/dist/d3-polygon.js
generated
vendored
Normal file
@@ -0,0 +1,150 @@
|
||||
// https://d3js.org/d3-polygon/ v1.0.6 Copyright 2019 Mike Bostock
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
||||
(global = global || self, factory(global.d3 = global.d3 || {}));
|
||||
}(this, function (exports) { 'use strict';
|
||||
|
||||
function area(polygon) {
|
||||
var i = -1,
|
||||
n = polygon.length,
|
||||
a,
|
||||
b = polygon[n - 1],
|
||||
area = 0;
|
||||
|
||||
while (++i < n) {
|
||||
a = b;
|
||||
b = polygon[i];
|
||||
area += a[1] * b[0] - a[0] * b[1];
|
||||
}
|
||||
|
||||
return area / 2;
|
||||
}
|
||||
|
||||
function centroid(polygon) {
|
||||
var i = -1,
|
||||
n = polygon.length,
|
||||
x = 0,
|
||||
y = 0,
|
||||
a,
|
||||
b = polygon[n - 1],
|
||||
c,
|
||||
k = 0;
|
||||
|
||||
while (++i < n) {
|
||||
a = b;
|
||||
b = polygon[i];
|
||||
k += c = a[0] * b[1] - b[0] * a[1];
|
||||
x += (a[0] + b[0]) * c;
|
||||
y += (a[1] + b[1]) * c;
|
||||
}
|
||||
|
||||
return k *= 3, [x / k, y / k];
|
||||
}
|
||||
|
||||
// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of
|
||||
// the 3D cross product in a quadrant I Cartesian coordinate system (+x is
|
||||
// right, +y is up). Returns a positive value if ABC is counter-clockwise,
|
||||
// negative if clockwise, and zero if the points are collinear.
|
||||
function cross(a, b, c) {
|
||||
return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
|
||||
}
|
||||
|
||||
function lexicographicOrder(a, b) {
|
||||
return a[0] - b[0] || a[1] - b[1];
|
||||
}
|
||||
|
||||
// Computes the upper convex hull per the monotone chain algorithm.
|
||||
// Assumes points.length >= 3, is sorted by x, unique in y.
|
||||
// Returns an array of indices into points in left-to-right order.
|
||||
function computeUpperHullIndexes(points) {
|
||||
var n = points.length,
|
||||
indexes = [0, 1],
|
||||
size = 2;
|
||||
|
||||
for (var i = 2; i < n; ++i) {
|
||||
while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;
|
||||
indexes[size++] = i;
|
||||
}
|
||||
|
||||
return indexes.slice(0, size); // remove popped points
|
||||
}
|
||||
|
||||
function hull(points) {
|
||||
if ((n = points.length) < 3) return null;
|
||||
|
||||
var i,
|
||||
n,
|
||||
sortedPoints = new Array(n),
|
||||
flippedPoints = new Array(n);
|
||||
|
||||
for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];
|
||||
sortedPoints.sort(lexicographicOrder);
|
||||
for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];
|
||||
|
||||
var upperIndexes = computeUpperHullIndexes(sortedPoints),
|
||||
lowerIndexes = computeUpperHullIndexes(flippedPoints);
|
||||
|
||||
// Construct the hull polygon, removing possible duplicate endpoints.
|
||||
var skipLeft = lowerIndexes[0] === upperIndexes[0],
|
||||
skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],
|
||||
hull = [];
|
||||
|
||||
// Add upper hull in right-to-l order.
|
||||
// Then add lower hull in left-to-right order.
|
||||
for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);
|
||||
for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);
|
||||
|
||||
return hull;
|
||||
}
|
||||
|
||||
function contains(polygon, point) {
|
||||
var n = polygon.length,
|
||||
p = polygon[n - 1],
|
||||
x = point[0], y = point[1],
|
||||
x0 = p[0], y0 = p[1],
|
||||
x1, y1,
|
||||
inside = false;
|
||||
|
||||
for (var i = 0; i < n; ++i) {
|
||||
p = polygon[i], x1 = p[0], y1 = p[1];
|
||||
if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;
|
||||
x0 = x1, y0 = y1;
|
||||
}
|
||||
|
||||
return inside;
|
||||
}
|
||||
|
||||
function length(polygon) {
|
||||
var i = -1,
|
||||
n = polygon.length,
|
||||
b = polygon[n - 1],
|
||||
xa,
|
||||
ya,
|
||||
xb = b[0],
|
||||
yb = b[1],
|
||||
perimeter = 0;
|
||||
|
||||
while (++i < n) {
|
||||
xa = xb;
|
||||
ya = yb;
|
||||
b = polygon[i];
|
||||
xb = b[0];
|
||||
yb = b[1];
|
||||
xa -= xb;
|
||||
ya -= yb;
|
||||
perimeter += Math.sqrt(xa * xa + ya * ya);
|
||||
}
|
||||
|
||||
return perimeter;
|
||||
}
|
||||
|
||||
exports.polygonArea = area;
|
||||
exports.polygonCentroid = centroid;
|
||||
exports.polygonContains = contains;
|
||||
exports.polygonHull = hull;
|
||||
exports.polygonLength = length;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
}));
|
||||
2
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/dist/d3-polygon.min.js
generated
vendored
Normal file
2
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/dist/d3-polygon.min.js
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
// https://d3js.org/d3-polygon/ v1.0.6 Copyright 2019 Mike Bostock
|
||||
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((n=n||self).d3=n.d3||{})}(this,function(n){"use strict";function e(n,e){return n[0]-e[0]||n[1]-e[1]}function r(n){for(var e,r,t,o=n.length,f=[0,1],u=2,l=2;l<o;++l){for(;u>1&&(e=n[f[u-2]],r=n[f[u-1]],t=n[l],(r[0]-e[0])*(t[1]-e[1])-(r[1]-e[1])*(t[0]-e[0])<=0);)--u;f[u++]=l}return f.slice(0,u)}n.polygonArea=function(n){for(var e,r=-1,t=n.length,o=n[t-1],f=0;++r<t;)e=o,o=n[r],f+=e[1]*o[0]-e[0]*o[1];return f/2},n.polygonCentroid=function(n){for(var e,r,t=-1,o=n.length,f=0,u=0,l=n[o-1],i=0;++t<o;)e=l,l=n[t],i+=r=e[0]*l[1]-l[0]*e[1],f+=(e[0]+l[0])*r,u+=(e[1]+l[1])*r;return[f/(i*=3),u/i]},n.polygonContains=function(n,e){for(var r,t,o=n.length,f=n[o-1],u=e[0],l=e[1],i=f[0],g=f[1],h=!1,a=0;a<o;++a)r=(f=n[a])[0],(t=f[1])>l!=g>l&&u<(i-r)*(l-t)/(g-t)+r&&(h=!h),i=r,g=t;return h},n.polygonHull=function(n){if((o=n.length)<3)return null;var t,o,f=new Array(o),u=new Array(o);for(t=0;t<o;++t)f[t]=[+n[t][0],+n[t][1],t];for(f.sort(e),t=0;t<o;++t)u[t]=[f[t][0],-f[t][1]];var l=r(f),i=r(u),g=i[0]===l[0],h=i[i.length-1]===l[l.length-1],a=[];for(t=l.length-1;t>=0;--t)a.push(n[f[l[t]][2]]);for(t=+g;t<i.length-h;++t)a.push(n[f[i[t]][2]]);return a},n.polygonLength=function(n){for(var e,r,t=-1,o=n.length,f=n[o-1],u=f[0],l=f[1],i=0;++t<o;)e=u,r=l,e-=u=(f=n[t])[0],r-=l=f[1],i+=Math.sqrt(e*e+r*r);return i},Object.defineProperty(n,"__esModule",{value:!0})});
|
||||
44
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/package.json
generated
vendored
Normal file
44
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/package.json
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "d3-polygon",
|
||||
"version": "1.0.6",
|
||||
"description": "Operations for two-dimensional polygons.",
|
||||
"keywords": [
|
||||
"d3",
|
||||
"d3-module",
|
||||
"polygon",
|
||||
"hull",
|
||||
"geometry",
|
||||
"graphics"
|
||||
],
|
||||
"homepage": "https://d3js.org/d3-polygon/",
|
||||
"license": "BSD-3-Clause",
|
||||
"author": {
|
||||
"name": "Mike Bostock",
|
||||
"url": "http://bost.ocks.org/mike"
|
||||
},
|
||||
"main": "dist/d3-polygon.js",
|
||||
"unpkg": "dist/d3-polygon.min.js",
|
||||
"jsdelivr": "dist/d3-polygon.min.js",
|
||||
"module": "src/index.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/d3/d3-polygon.git"
|
||||
},
|
||||
"files": [
|
||||
"dist/**/*.js",
|
||||
"src/**/*.js"
|
||||
],
|
||||
"scripts": {
|
||||
"pretest": "rollup -c",
|
||||
"test": "tape 'test/**/*-test.js' && eslint src test",
|
||||
"prepublishOnly": "rm -rf dist && yarn test",
|
||||
"postpublish": "git push && git push --tags && cd ../d3.github.com && git pull && cp ../${npm_package_name}/dist/${npm_package_name}.js ${npm_package_name}.v${npm_package_version%%.*}.js && cp ../${npm_package_name}/dist/${npm_package_name}.min.js ${npm_package_name}.v${npm_package_version%%.*}.min.js && git add ${npm_package_name}.v${npm_package_version%%.*}.js ${npm_package_name}.v${npm_package_version%%.*}.min.js && git commit -m \"${npm_package_name} ${npm_package_version}\" && git push && cd - && zip -j dist/${npm_package_name}.zip -- LICENSE README.md dist/${npm_package_name}.js dist/${npm_package_name}.min.js"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"devDependencies": {
|
||||
"eslint": "6",
|
||||
"rollup": "1",
|
||||
"rollup-plugin-terser": "5",
|
||||
"tape": "4"
|
||||
}
|
||||
}
|
||||
15
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/area.js
generated
vendored
Normal file
15
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/area.js
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
export default function(polygon) {
|
||||
var i = -1,
|
||||
n = polygon.length,
|
||||
a,
|
||||
b = polygon[n - 1],
|
||||
area = 0;
|
||||
|
||||
while (++i < n) {
|
||||
a = b;
|
||||
b = polygon[i];
|
||||
area += a[1] * b[0] - a[0] * b[1];
|
||||
}
|
||||
|
||||
return area / 2;
|
||||
}
|
||||
20
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/centroid.js
generated
vendored
Normal file
20
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/centroid.js
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
export default function(polygon) {
|
||||
var i = -1,
|
||||
n = polygon.length,
|
||||
x = 0,
|
||||
y = 0,
|
||||
a,
|
||||
b = polygon[n - 1],
|
||||
c,
|
||||
k = 0;
|
||||
|
||||
while (++i < n) {
|
||||
a = b;
|
||||
b = polygon[i];
|
||||
k += c = a[0] * b[1] - b[0] * a[1];
|
||||
x += (a[0] + b[0]) * c;
|
||||
y += (a[1] + b[1]) * c;
|
||||
}
|
||||
|
||||
return k *= 3, [x / k, y / k];
|
||||
}
|
||||
16
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/contains.js
generated
vendored
Normal file
16
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/contains.js
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
export default function(polygon, point) {
|
||||
var n = polygon.length,
|
||||
p = polygon[n - 1],
|
||||
x = point[0], y = point[1],
|
||||
x0 = p[0], y0 = p[1],
|
||||
x1, y1,
|
||||
inside = false;
|
||||
|
||||
for (var i = 0; i < n; ++i) {
|
||||
p = polygon[i], x1 = p[0], y1 = p[1];
|
||||
if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;
|
||||
x0 = x1, y0 = y1;
|
||||
}
|
||||
|
||||
return inside;
|
||||
}
|
||||
7
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/cross.js
generated
vendored
Normal file
7
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/cross.js
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of
|
||||
// the 3D cross product in a quadrant I Cartesian coordinate system (+x is
|
||||
// right, +y is up). Returns a positive value if ABC is counter-clockwise,
|
||||
// negative if clockwise, and zero if the points are collinear.
|
||||
export default function(a, b, c) {
|
||||
return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
|
||||
}
|
||||
49
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/hull.js
generated
vendored
Normal file
49
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/hull.js
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
import cross from "./cross.js";
|
||||
|
||||
function lexicographicOrder(a, b) {
|
||||
return a[0] - b[0] || a[1] - b[1];
|
||||
}
|
||||
|
||||
// Computes the upper convex hull per the monotone chain algorithm.
|
||||
// Assumes points.length >= 3, is sorted by x, unique in y.
|
||||
// Returns an array of indices into points in left-to-right order.
|
||||
function computeUpperHullIndexes(points) {
|
||||
var n = points.length,
|
||||
indexes = [0, 1],
|
||||
size = 2;
|
||||
|
||||
for (var i = 2; i < n; ++i) {
|
||||
while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;
|
||||
indexes[size++] = i;
|
||||
}
|
||||
|
||||
return indexes.slice(0, size); // remove popped points
|
||||
}
|
||||
|
||||
export default function(points) {
|
||||
if ((n = points.length) < 3) return null;
|
||||
|
||||
var i,
|
||||
n,
|
||||
sortedPoints = new Array(n),
|
||||
flippedPoints = new Array(n);
|
||||
|
||||
for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];
|
||||
sortedPoints.sort(lexicographicOrder);
|
||||
for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];
|
||||
|
||||
var upperIndexes = computeUpperHullIndexes(sortedPoints),
|
||||
lowerIndexes = computeUpperHullIndexes(flippedPoints);
|
||||
|
||||
// Construct the hull polygon, removing possible duplicate endpoints.
|
||||
var skipLeft = lowerIndexes[0] === upperIndexes[0],
|
||||
skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],
|
||||
hull = [];
|
||||
|
||||
// Add upper hull in right-to-l order.
|
||||
// Then add lower hull in left-to-right order.
|
||||
for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);
|
||||
for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);
|
||||
|
||||
return hull;
|
||||
}
|
||||
5
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/index.js
generated
vendored
Normal file
5
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/index.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
export {default as polygonArea} from "./area.js";
|
||||
export {default as polygonCentroid} from "./centroid.js";
|
||||
export {default as polygonHull} from "./hull.js";
|
||||
export {default as polygonContains} from "./contains.js";
|
||||
export {default as polygonLength} from "./length.js";
|
||||
23
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/length.js
generated
vendored
Normal file
23
lisp/emacs-application-framework/app/mermaid/node_modules/d3-polygon/src/length.js
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
export default function(polygon) {
|
||||
var i = -1,
|
||||
n = polygon.length,
|
||||
b = polygon[n - 1],
|
||||
xa,
|
||||
ya,
|
||||
xb = b[0],
|
||||
yb = b[1],
|
||||
perimeter = 0;
|
||||
|
||||
while (++i < n) {
|
||||
xa = xb;
|
||||
ya = yb;
|
||||
b = polygon[i];
|
||||
xb = b[0];
|
||||
yb = b[1];
|
||||
xa -= xb;
|
||||
ya -= yb;
|
||||
perimeter += Math.sqrt(xa * xa + ya * ya);
|
||||
}
|
||||
|
||||
return perimeter;
|
||||
}
|
||||
Reference in New Issue
Block a user