From 124de1eca175d4c7e315ef9909ed2269375f9e84 Mon Sep 17 00:00:00 2001 From: Harry Stevens Date: Tue, 6 Jun 2023 13:04:06 -0400 Subject: [PATCH] 2.5.4 --- README.md | 4 ++-- build/geometric.js | 2 +- build/geometric.min.js | 1 + build/geometric.zip | Bin 0 -> 14838 bytes 4 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 build/geometric.min.js create mode 100644 build/geometric.zip diff --git a/README.md b/README.md index 876deeb..c93f3b7 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ A JavaScript library for doing geometry. ### Web browser In vanilla, a `geometric` global is exported. You can use the latest version from unpkg. ```html - - + + ``` If you'd rather host it yourself, download the latest release from the [`build` directory](https://github.com/HarryStevens/geometric/tree/master/build). diff --git a/build/geometric.js b/build/geometric.js index c9e46d8..7c2f980 100644 --- a/build/geometric.js +++ b/build/geometric.js @@ -1,4 +1,4 @@ -// https://github.com/HarryStevens/geometric#readme Version 2.5.3. Copyright 2023 Harry Stevens. +// https://github.com/HarryStevens/geometric#readme Version 2.5.4. Copyright 2023 Harry Stevens. (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : diff --git a/build/geometric.min.js b/build/geometric.min.js new file mode 100644 index 0000000..589e0c3 --- /dev/null +++ b/build/geometric.min.js @@ -0,0 +1 @@ +!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.geometric={})}(this,function(n){"use strict";function t(n){return 180*n/Math.PI}function r(n){return t(Math.atan2(n[1][1]-n[0][1],n[1][0]-n[0][0]))}function e(n,t){return a(n)||l(n,t)||c()}function o(n){return i(n)||u(n)||f()}function i(n){if(Array.isArray(n)){for(var t=0,r=new Array(n.length);t1&&void 0!==arguments[1]&&arguments[1],r=e(n,2),o=e(r[0],2),i=o[0],a=o[1],u=e(r[1],2),l=u[0],f=u[1],c=function(n){return(l-i)*n+i},h=function(n){return(f-a)*n+a};return function(n){var r=t?n<0?0:n>1?1:n:n;return[c(r),h(r)]}}function g(n){return Math.sqrt(Math.pow(n[1][0]-n[0][0],2)+Math.pow(n[1][1]-n[0][1],2))}function v(n){return[(n[0][0]+n[1][0])/2,(n[0][1]+n[1][1])/2]}function p(n){return n/180*Math.PI}function s(n,t,r){var e=p(t||0);return!r||0===r[0]&&0===r[1]?y(n,e):y(n.map(function(n,t){return n-r[t]}),e).map(function(n,t){return n+r[t]})}function y(n,t){return[n[0]*Math.cos(t)-n[1]*Math.sin(t),n[0]*Math.sin(t)+n[1]*Math.cos(t)]}function d(n,t,r){return n.map(function(e){return s(e,t,r||v(n))})}function M(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,e=p(t);return[n[0]+r*Math.cos(e),n[1]+r*Math.sin(e)]}function m(n,t,r){return n.map(function(n){return M(n,t,r)})}function b(n){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=0,e=0,o=n.length;er&&(r=f),co&&(o=c))}return i?[[t,e],[r,o]]:null}function A(n){for(var t=0,r=0,e=0,o=n.length,i=0;i=2&&w(r[r.length-2],r[r.length-1],t[e])<=0;)r.pop();r.push(t[e])}for(var o=[],i=t.length-1;i>=0;i--){for(;o.length>=2&&w(o[o.length-2],o[o.length-1],t[i])<=0;)o.pop();o.push(t[i])}return o.pop(),r.pop(),r.concat(o)}function R(n){return k(n)?n:[].concat(o(n),[n[0]])}function k(n){var t=n[0],r=n[n.length-1];return t[0]===r[0]&&t[1]===r[1]}function L(n){if(0===n.length)return 0;for(var t,r,e=-1,o=n.length,i=n[o-1],a=i[0],u=i[1],l=0;++e=1)return e[e.length-1];for(var o=L(e)*t,i=[],a=0,u=0;u0&&void 0!==arguments[0]?arguments[0]:3,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[0,0],o=Math.sqrt(t/Math.PI),i=Array.from({length:n},function(){return 2*o*Math.random()}),a=Array.from({length:n},function(){return 2*o*Math.random()});i.sort(function(n,t){return n-t}),a.sort(function(n,t){return n-t});var u=O(i,i[0],i[i.length-1]),l=O(a,a[0],a[a.length-1]);E(l);var f=[],c=0,h=0,v=(u.map(function(n,t){return[n,l[t]]}).sort(function(n,t){return Math.atan2(t[1],t[0])-Math.atan2(n[1],n[0])}).forEach(function(n){c+=1*n[0],h+=1*n[1],f.push([c,h])}),A(f));return j(x(f,t/b(f)),r([v,e]),g([v,e]))}function O(n,t,r){for(var e=t,o=t,i=[],a=1;a.5?(i.push(u-e),e=u):(i.push(o-u),o=u)}return i.push(r-e),i.push(o-r),i}function E(n){for(var t=n.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),e=[n[r],n[t]];n[t]=e[0],n[r]=e[1]}}function F(n){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=I(n),o=e(r,2),i=e(o[0],2),a=i[0],u=(i[1],e(o[1],2)),l=u[0],f=(u[1],[]),c=0,g=n.length;c1&&void 0!==arguments[1]?arguments[1]:1,r=I(n),o=e(r,2),i=e(o[0],2),a=(i[0],i[1]),u=e(o[1],2),l=(u[0],u[1]),f=[],c=0,g=n.length;c0&&void 0!==arguments[0]?arguments[0]:3,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,e=arguments.length>2?arguments[2]:void 0,o=[],i=[0,0],a=[0,0],u=0,l=0;l1&&void 0!==arguments[1]?arguments[1]:"ccw";if(n.length<3)return null;var r=n.slice().reverse(),e=b(n,!0)>0;return"cw"===t||"clockwise"===t?e?n:r:e?r:n}function H(n){return n[1][1]>n[0][1]?n:[n[1],n[0]]}function z(n,t){var r=H(t);return w(n,r[1],r[0])<0}function G(n,t){var r=H(t);return w(n,r[1],r[0])>0}function J(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,e=g(t);return K(n,t,r)&&g([t[0],n])<=e&&g([t[1],n])<=e}function K(n,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return Math.abs(w(n,t[0],t[1]))<=r}function N(n,t){var r=e(n,2),o=e(r[0],2),i=o[0],a=o[1],u=e(r[1],2),l=u[0],f=u[1],c=e(t,2),h=e(c[0],2),g=h[0],v=h[1],p=e(c[1],2),s=p[0],y=p[1];if(i===g&&a===v)return!0;if(l===s&&f===y)return!0;if(J(n[0],t)||J(n[1],t))return!0;if(J(t[0],n)||J(t[1],n))return!0;var d=(y-v)*(l-i)-(s-g)*(f-a);if(0===d)return!1;var M=a-v,m=i-g,b=(s-g)*M-(y-v)*m,I=(l-i)*M-(f-a)*m,A=b/d,w=I/d;return A>0&&A<1&&w>0&&w<1}function Q(n,t){for(var r=!1,e=R(t),o=0,i=e.length-1;oe!=c>e&&r<(f-u)*(e-l)/(c-l)+u&&(o=!o)}return o}function V(n,t){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,e=!1,o=R(t),i=0,a=o.length-1;i=360?r-360:r<0?r+360:r}n.lineAngle=r,n.lineInterpolate=h,n.lineLength=g,n.lineMidpoint=v,n.lineRotate=d,n.lineTranslate=m,n.pointRotate=s,n.pointTranslate=M,n.polygonArea=b,n.polygonBounds=I,n.polygonCentroid=A,n.polygonHull=P,n.polygonInterpolate=S,n.polygonLength=L,n.polygonMean=T,n.polygonRandom=q,n.polygonReflectX=F,n.polygonReflectY=W,n.polygonRegular=X,n.polygonRotate=Y,n.polygonScale=_,n.polygonScaleArea=x,n.polygonScaleX=B,n.polygonScaleY=C,n.polygonTranslate=j,n.polygonWind=D,n.lineIntersectsLine=N,n.lineIntersectsPolygon=Q,n.pointInPolygon=U,n.pointOnPolygon=V,n.pointLeftofLine=z,n.pointRightofLine=G,n.pointOnLine=J,n.pointWithLine=K,n.polygonInPolygon=Z,n.polygonIntersectsPolygon=$,n.angleReflect=nn,n.angleToDegrees=t,n.angleToRadians=p,Object.defineProperty(n,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/build/geometric.zip b/build/geometric.zip new file mode 100644 index 0000000000000000000000000000000000000000..7089df94f7018987b3c5a98c3bdd757cd6485503 GIT binary patch literal 14838 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 YOGy?S;$OQ1_RlT$&t~Ot{p;<20SmUl9smFU literal 0 HcmV?d00001