Path: blob/main/projects/n-gon/lib/decomp.min.js
1834 views
!function(n){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var r;"undefined"!=typeof window?r=window:"undefined"!=typeof global?r=global:"undefined"!=typeof self&&(r=self),r.decomp=n()}}((function(){return function n(r,e,t){function u(o,i){if(!e[o]){if(!r[o]){var l="function"==typeof require&&require;if(!i&&l)return l(o,!0);if(f)return f(o,!0);throw new Error("Cannot find module '"+o+"'")}var h=e[o]={exports:{}};r[o][0].call(h.exports,(function(n){var e=r[o][1][n];return u(e||n)}),h,h.exports,n,r,e,t)}return e[o].exports}for(var f="function"==typeof require&&require,o=0;o<t.length;o++)u(t[o]);return u}({1:[function(n,r,e){function t(n,r,e){e=e||0;var t,u,f,o,i,l,h,a=[0,0];return t=n[1][1]-n[0][1],u=n[0][0]-n[1][0],f=t*n[0][0]+u*n[0][1],o=r[1][1]-r[0][1],i=r[0][0]-r[1][0],l=o*r[0][0]+i*r[0][1],b(h=t*i-o*u,0,e)||(a[0]=(i*f-u*l)/h,a[1]=(t*l-o*f)/h),a}function u(n,r,e,t){var u=r[0]-n[0],f=r[1]-n[1],o=t[0]-e[0],i=t[1]-e[1];if(o*f-i*u==0)return!1;var l=(u*(e[1]-n[1])+f*(n[0]-e[0]))/(o*f-i*u),h=(o*(n[1]-e[1])+i*(e[0]-n[0]))/(i*u-o*f);return l>=0&&1>=l&&h>=0&&1>=h}function f(n,r,e){return(r[0]-n[0])*(e[1]-n[1])-(e[0]-n[0])*(r[1]-n[1])}function o(n,r,e){return f(n,r,e)>0}function i(n,r,e){return f(n,r,e)>=0}function l(n,r,e){return f(n,r,e)<0}function h(n,r,e){return f(n,r,e)<=0}function a(n,r,e,t){if(t){var u=w,o=M;u[0]=r[0]-n[0],u[1]=r[1]-n[1],o[0]=e[0]-r[0],o[1]=e[1]-r[1];var i=u[0]*o[0]+u[1]*o[1],l=Math.sqrt(u[0]*u[0]+u[1]*u[1]),h=Math.sqrt(o[0]*o[0]+o[1]*o[1]);return t>Math.acos(i/(l*h))}return 0===f(n,r,e)}function c(n,r){var e=r[0]-n[0],t=r[1]-n[1];return e*e+t*t}function g(n,r){var e=n.length;return n[0>r?r%e+e:r%e]}function s(n,r,e,t){for(var u=e;t>u;u++)n.push(r[u])}function p(n,r){return l(g(n,r-1),g(n,r),g(n,r+1))}function v(n,r,e){var u,f,o=k,l=C;if(i(g(n,r+1),g(n,r),g(n,e))&&h(g(n,r-1),g(n,r),g(n,e)))return!1;f=c(g(n,r),g(n,e));for(var a=0;a!==n.length;++a)if((a+1)%n.length!==r&&a!==r&&i(g(n,r),g(n,e),g(n,a+1))&&h(g(n,r),g(n,e),g(n,a))&&(o[0]=g(n,r),o[1]=g(n,e),l[0]=g(n,a),l[1]=g(n,a+1),u=t(o,l),c(g(n,r),u)<f))return!1;return!0}function d(n,r,e){for(var t=0;t!==n.length;++t)if(t!==r&&t!==e&&(t+1)%n.length!==r&&(t+1)%n.length!==e&&u(g(n,r),g(n,e),g(n,t),g(n,t+1)))return!1;return!0}function m(n,r,e,t){var u=t||[];if(function(n){n.length=0}(u),e>r)for(var f=r;e>=f;f++)u.push(n[f]);else{for(f=0;e>=f;f++)u.push(n[f]);for(f=r;f<n.length;f++)u.push(n[f])}return u}function y(n){for(var r=[],e=[],t=[],u=[],f=Number.MAX_VALUE,o=0;o<n.length;++o)if(p(n,o))for(var i=0;i<n.length;++i)if(v(n,o,i)){e=y(m(n,o,i,u)),t=y(m(n,i,o,u));for(var l=0;l<t.length;l++)e.push(t[l]);e.length<f&&(r=e,f=e.length,r.push([g(n,o),g(n,i)]))}return r}function x(n,r){if(0===r.length)return[n];if(r instanceof Array&&r.length&&r[0]instanceof Array&&2===r[0].length&&r[0][0]instanceof Array){for(var e=[n],t=0;t<r.length;t++)for(var u=r[t],f=0;f<e.length;f++){var o=x(e[f],u);if(o){e.splice(f,1),e.push(o[0],o[1]);break}}return e}u=r,t=n.indexOf(u[0]),f=n.indexOf(u[1]);return-1!==t&&-1!==f&&[m(n,t,f),m(n,f,t)]}function A(n,r,e,t,u){u=u||0;var f=r[1]-n[1],o=n[0]-r[0],i=f*n[0]+o*n[1],l=t[1]-e[1],h=e[0]-t[0],a=l*e[0]+h*e[1],c=f*h-l*o;return b(c,0,u)?[0,0]:[(h*i-o*a)/c,(f*a-l*i)/c]}function b(n,r,e){return e=e||0,Math.abs(n-r)<=e}function q(n,r,e){return b(n[0],r[0],e)&&b(n[1],r[1],e)}r.exports={decomp:function(n){var r=y(n);return r.length>0?x(n,r):[n]},quickDecomp:function n(r,e,t,u,f,a,v){a=a||100,v=v||0,f=f||25,e=void 0!==e?e:[],t=t||[],u=u||[];var m=[0,0],y=[0,0],x=[0,0],b=0,q=0,w=0,M=0,k=0,C=0,E=0,D=[],L=[],N=r,U=r;if(U.length<3)return e;if(++v>a)return console.warn("quickDecomp: max level ("+a+") reached."),e;for(var V=0;V<r.length;++V)if(p(N,V)){t.push(N[V]),b=q=Number.MAX_VALUE;for(var X=0;X<r.length;++X)o(g(N,V-1),g(N,V),g(N,X))&&h(g(N,V-1),g(N,V),g(N,X-1))&&(x=A(g(N,V-1),g(N,V),g(N,X),g(N,X-1)),l(g(N,V+1),g(N,V),x)&&(q>(w=c(N[V],x))&&(q=w,y=x,C=X))),o(g(N,V+1),g(N,V),g(N,X+1))&&h(g(N,V+1),g(N,V),g(N,X))&&(x=A(g(N,V+1),g(N,V),g(N,X),g(N,X+1)),o(g(N,V-1),g(N,V),x)&&(b>(w=c(N[V],x))&&(b=w,m=x,k=X)));if(C===(k+1)%r.length)x[0]=(y[0]+m[0])/2,x[1]=(y[1]+m[1])/2,u.push(x),k>V?(s(D,N,V,k+1),D.push(x),L.push(x),0!==C&&s(L,N,C,N.length),s(L,N,0,V+1)):(0!==V&&s(D,N,V,N.length),s(D,N,0,k+1),D.push(x),L.push(x),s(L,N,C,V+1));else{if(C>k&&(k+=r.length),M=Number.MAX_VALUE,C>k)return e;for(X=C;k>=X;++X)i(g(N,V-1),g(N,V),g(N,X))&&h(g(N,V+1),g(N,V),g(N,X))&&(M>(w=c(g(N,V),g(N,X)))&&d(N,V,X)&&(M=w,E=X%r.length));E>V?(s(D,N,V,E+1),0!==E&&s(L,N,E,U.length),s(L,N,0,V+1)):(0!==V&&s(D,N,V,U.length),s(D,N,0,E+1),s(L,N,E,V+1))}return D.length<L.length?(n(D,e,t,u,f,a,v),n(L,e,t,u,f,a,v)):(n(L,e,t,u,f,a,v),n(D,e,t,u,f,a,v)),e}return e.push(r),e},isSimple:function(n){var r,e=n;for(r=0;r<e.length-1;r++)for(var t=0;r-1>t;t++)if(u(e[r],e[r+1],e[t],e[t+1]))return!1;for(r=1;r<e.length-2;r++)if(u(e[0],e[e.length-1],e[r],e[r+1]))return!1;return!0},removeCollinearPoints:function(n,r){for(var e=0,t=n.length-1;n.length>3&&t>=0;--t)a(g(n,t-1),g(n,t),g(n,t+1),r)&&(n.splice(t%n.length,1),e++);return e},removeDuplicatePoints:function(n,r){for(var e=n.length-1;e>=1;--e)for(var t=n[e],u=e-1;u>=0;--u)q(t,n[u],r)&&n.splice(e,1)},makeCCW:function(n){for(var r=0,e=n,t=1;t<n.length;++t)(e[t][1]<e[r][1]||e[t][1]===e[r][1]&&e[t][0]>e[r][0])&&(r=t);return!o(g(n,r-1),g(n,r),g(n,r+1))&&(function(n){for(var r=[],e=n.length,t=0;t!==e;t++)r.push(n.pop());for(t=0;t!==e;t++)n[t]=r[t]}(n),!0)}};var w=[],M=[],k=[],C=[]},{}]},{},[1])(1)}));123