UNPKG

flatten-js

Version:

Javascript library for 2d geometry

1 lines 9.75 kB
{"dependencies":[{"name":"C:\\Users\\alexbol\\WebstormProjects\\flatten-js\\package.json","includedInParent":true,"mtime":1520238055570},{"name":"flatten-interval-tree","loc":{"line":3,"column":27}}],"generated":{"js":"\"use strict\";var e=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var o,u=e[Symbol.iterator]();!(r=(o=u.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{!r&&u.return&&u.return()}finally{if(i)throw a}}return n}(e,t);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}(),t=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function n(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function r(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}var i=require(\"flatten-interval-tree\");module.exports=function(a){a.Polygon,a.Point;var o=a.Segment,u=(a.Arc,a.Circle,a.Line),c=(a.Ray,a.Vector,a.vector);a.Distance=function(){function l(){r(this,l)}return t(l,null,[{key:\"point2point\",value:function(e,t){return e.distanceTo(t)}},{key:\"point2line\",value:function(e,t){var n=e.projectionOn(t);return[c(e,n).length,new o(e,n)]}},{key:\"point2circle\",value:function(t,n){var r=t.distanceTo(n.center),i=e(r,2),u=i[0];i[1];if(a.Utils.EQ_0(u))return[n.r,new o(t,n.toArc().start)];var l=Math.abs(u-n.r),s=c(n.pc,t).normalize().multiply(n.r),v=n.pc.translate(s);return[l,new o(t,v)]}},{key:\"point2segment\",value:function(e,t){if(t.start.equalTo(t.end))return l.point2point(e,t.start);var n=new a.Vector(t.start,t.end),r=new a.Vector(t.start,e),i=new a.Vector(t.end,e),u=n.dot(r),c=-n.dot(i),s=void 0,v=void 0;if(a.Utils.GE(u,0)&&a.Utils.GE(c,0)){var p=t.tangentInStart();return s=Math.abs(p.cross(r)),v=t.start.translate(p.multiply(p.dot(r))),[s,new o(e,v)]}return u<0?e.distanceTo(t.start):e.distanceTo(t.end)}},{key:\"point2arc\",value:function(t,n){var r=new a.Circle(n.pc,n.r),i=[],o=l.point2circle(t,r),u=e(o,2);return u[0],u[1].end.on(n)&&i.push(l.point2circle(t,r)),i.push(l.point2point(t,n.start)),i.push(l.point2point(t,n.end)),l.sort(i),i[0]}},{key:\"segment2line\",value:function(e,t){var n=e.intersect(t);return n.length>0?[0,new o(n[0],n[0])]:(dist_and_segment.push(l.point2line(e.start,t)),dist_and_segment.push(l.point2line(e.end,t)),l.sort(dist_and_segment),dist_and_segment[0])}},{key:\"segment2segment\",value:function(e,t){var n=o.intersectSegment2Segment(e,t);if(n.length>0)return[0,new o(n[0],n[0])];var r=[];return r.push(l.point2segment(t.start,e)),r.push(l.point2segment(t.end,e)),r.push(l.point2segment(e.start,t)),r.push(l.point2segment(e.end,t)),l.sort(r),r[0]}},{key:\"segment2circle\",value:function(t,n){var r=t.intersect(n);if(r.length>0)return[0,new o(r[0],r[0])];var i=new a.Line(t.ps,t.pe),u=l.point2line(n.center,i),c=e(u,2),s=c[0],v=c[1];if(a.Utils.GE(s,n.r)&&v.end.on(t))return l.point2circle(v.end,n);var p=l.point2circle(t.start,n),f=e(p,2),d=f[0],m=f[1],h=l.point2circle(t.end,n),y=e(h,2),g=y[0],x=y[1];return a.Utils.LT(d,g)?[d,m]:[g,x]}},{key:\"segment2arc\",value:function(t,n){var r=t.intersect(n);if(r.length>0)return[0,new o(r[0],r[0])];var i=new a.Line(t.ps,t.pe),u=new a.Circle(n.pc,n.r),c=l.point2line(u.center,i),s=e(c,2),v=s[0],p=s[1];if(a.Utils.GE(v,u.r)&&p.end.on(t)){var f=l.point2circle(p.end,u),d=e(f,2),m=d[0],h=d[1];if(h.end.on(n))return[m,h]}var y=[];y.push(l.point2arc(t.start,n)),y.push(l.point2arc(t.end,n));var g=void 0,x=void 0,w=l.point2segment(n.start,t),_=e(w,2);g=_[0],x=_[1],y.push([g,x.reverse()]);var I=l.point2segment(n.end,t),T=e(I,2);return g=T[0],x=T[1],y.push([g,x.reverse()]),l.sort(y),y[0]}},{key:\"circle2circle\",value:function(e,t){var n=e.intersect(t);if(n.length>0)return[0,new o(n[0],n[0])];if(e.center.equalTo(t.center)){var r=e.toArc(),i=t.toArc();return l.point2point(r.start,i.start)}var a=new u(e.center,t.center),c=a.intersect(e),s=a.intersect(t),v=[];return v.push(l.point2point(c[0],s[0])),v.push(l.point2point(c[0],s[1])),v.push(l.point2point(c[1],s[0])),v.push(l.point2point(c[1],s[1])),l.sort(v),v[0]}},{key:\"circle2line\",value:function(t,n){var r=t.intersect(n);if(r.length>0)return[0,new o(r[0],r[0])];var i=l.point2line(t.center,n),a=e(i,2),u=(a[0],a[1]),c=l.point2circle(u.end,t),s=e(c,2),v=s[0],p=s[1];return[v,p=p.reverse()]}},{key:\"arc2line\",value:function(t,n){var r=n.intersect(t);if(r.length>0)return[0,new o(r[0],r[0])];var i=new a.Circle(t.center,t.r),u=l.point2line(i.center,n),c=e(u,2),s=c[0],v=c[1];if(!a.Utils.GE(s,i.r)){var p=[];return p.push(l.point2line(t.start,n)),p.push(l.point2line(t.end,n)),l.sort(p),p[0]}var f=l.point2circle(v.end,i),d=e(f,2),m=d[0],h=d[1];return h.end.on(t)?[m,h]:void 0}},{key:\"arc2circle\",value:function(t,n){var r=t.intersect(n);if(r.length>0)return[0,new o(r[0],r[0])];var i=new a.Circle(t.center,t.r),u=l.circle2circle(i,n),c=e(u,2),s=c[0],v=c[1];if(v.start.on(t))return[s,v];var p=[];return p.push(l.point2circle(t.start,n)),p.push(l.point2circle(t.end,n)),l.sort(p),p[0]}},{key:\"arc2arc\",value:function(t,n){var r=t.intersect(n);if(r.length>0)return[0,new o(r[0],r[0])];var i=new a.Circle(t.center,t.r),u=new a.Circle(n.center,n.r),c=l.circle2circle(i,u),s=e(c,2),v=s[0],p=s[1];if(p.start.on(t)&&p.end.on(n))return[v,p];var f=[],d=void 0,m=void 0,h=l.point2arc(t.start,n),y=e(h,2);d=y[0],(m=y[1]).end.on(n)&&f.push([d,m]);var g=l.point2arc(t.end,n),x=e(g,2);d=x[0],(m=x[1]).end.on(n)&&f.push([d,m]);var w=l.point2arc(n.start,t),_=e(w,2);d=_[0],(m=_[1]).end.on(t)&&f.push([d,m.reverse()]);var I=l.point2arc(n.end,t),T=e(I,2);d=T[0],(m=T[1]).end.on(t)&&f.push([d,m.reverse()]);var b=l.point2point(t.start,n.start),k=e(b,2);d=k[0],m=k[1],f.push([d,m]);var N=l.point2point(t.start,n.end),S=e(N,2);d=S[0],m=S[1],f.push([d,m]);var E=l.point2point(t.end,n.start),U=e(E,2);d=U[0],m=U[1],f.push([d,m]);var L=l.point2point(t.end,n.end),A=e(L,2);return d=A[0],m=A[1],f.push([d,m]),l.sort(f),f[0]}},{key:\"point2polygon\",value:function(t,n){var r=[Number.POSITIVE_INFINITY,new o],i=!0,u=!1,c=void 0;try{for(var s,v=n.edges[Symbol.iterator]();!(i=(s=v.next()).done);i=!0){var p=s.value,f=p.shape instanceof o?l.point2segment(t,p.shape):l.point2arc(t,p.shape),d=e(f,2),m=d[0],h=d[1];a.Utils.LT(m,r[0])&&(r=[m,h])}}catch(e){u=!0,c=e}finally{try{!i&&v.return&&v.return()}finally{if(u)throw c}}return r}},{key:\"shape2polygon\",value:function(t,n){var r=[Number.POSITIVE_INFINITY,new o],i=!0,u=!1,c=void 0;try{for(var l,s=n.edges[Symbol.iterator]();!(i=(l=s.next()).done);i=!0){var v=l.value,p=t.distanceTo(v.shape),f=e(p,2),d=f[0],m=f[1];a.Utils.LT(d,r[0])&&(r=[d,m])}}catch(e){u=!0,c=e}finally{try{!i&&s.return&&s.return()}finally{if(u)throw c}}return r}},{key:\"polygon2polygon\",value:function(t,n){var r=[Number.POSITIVE_INFINITY,new a.Segment],i=!0,o=!1,u=void 0;try{for(var c,l=t.edges[Symbol.iterator]();!(i=(c=l.next()).done);i=!0){var s=c.value,v=!0,p=!1,f=void 0;try{for(var d,m=n.edges[Symbol.iterator]();!(v=(d=m.next()).done);v=!0){var h=d.value,y=s.shape.distanceTo(h.shape),g=e(y,2),x=g[0],w=g[1];a.Utils.LT(x,r[0])&&(r=[x,w])}}catch(e){p=!0,f=e}finally{try{!v&&m.return&&m.return()}finally{if(p)throw f}}}}catch(e){o=!0,u=e}finally{try{!i&&l.return&&l.return()}finally{if(o)throw u}}return r}},{key:\"box2box_minmax\",value:function(e,t){var n=Math.max(Math.max(e.xmin-t.xmax,0),Math.max(t.xmin-e.xmax,0)),r=Math.max(Math.max(e.ymin-t.ymax,0),Math.max(t.ymin-e.ymax,0)),i=n*n+r*r,a=e.merge(t),o=a.xmax-a.xmin,u=a.ymax-a.ymin;return[i,o*o+u*u]}},{key:\"minmax_tree_process_level\",value:function(t,r,i,o){var u=void 0,c=void 0,s=!0,v=!1,p=void 0;try{for(var f,d=r[Symbol.iterator]();!(s=(f=d.next()).done);s=!0){var m=f.value,h=l.box2box_minmax(t.box,m.item.key),y=e(h,2);u=y[0],c=y[1],m.item.value instanceof a.Edge?o.insert([u,c],m.item.value.shape):o.insert([u,c],m.item.value),a.Utils.LT(c,i)&&(i=c)}}catch(e){v=!0,p=e}finally{try{!s&&d.return&&d.return()}finally{if(v)throw p}}if(0===r.length)return i;var g=r.map(function(e){return e.left.isNil()?void 0:e.left}).filter(function(e){return void 0!==e}),x=r.map(function(e){return e.right.isNil()?void 0:e.right}).filter(function(e){return void 0!==e}),w=[].concat(n(g),n(x)).filter(function(n){var r=l.box2box_minmax(t.box,n.max),o=e(r,2),u=o[0];o[1];return a.Utils.LE(u,i)});return i=l.minmax_tree_process_level(t,w,i,o)}},{key:\"minmax_tree\",value:function(e,t,n){var r=new i,a=[t.index.root],o=n<Number.POSITIVE_INFINITY?n*n:Number.POSITIVE_INFINITY;return o=l.minmax_tree_process_level(e,a,o,r),r}},{key:\"minmax_tree_calc_distance\",value:function(t,n,r){var i=void 0,o=void 0;if(null!=n&&!n.isNil()){var u=l.minmax_tree_calc_distance(t,n.left,r),c=e(u,2);if(i=c[0],o=c[1])return[i,o];if(a.Utils.LT(i[0],Math.sqrt(n.item.key.low)))return[i,!0];var s=l.distance(t,n.item.value),v=e(s,2),p=v[0],f=v[1];a.Utils.LT(p,i[0])&&(i=[p,f]);var d=l.minmax_tree_calc_distance(t,n.right,i),m=e(d,2);return[i=m[0],o=m[1]]}return[r,!1]}},{key:\"shape2planarSet\",value:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number.POSITIVE_INFINITY,i=[r,new a.Segment];if(n instanceof a.PlanarSet){var o=l.minmax_tree(t,n,r),u=l.minmax_tree_calc_distance(t,o.root,i),c=e(u,2);i=c[0],c[1]}return i}},{key:\"sort\",value:function(e){e.sort(function(e,t){return a.Utils.LT(e[0],t[0])?-1:a.Utils.GT(e[0],t[0])?1:0})}},{key:\"distance\",value:function(e,t){return e.distanceTo(t)}}]),l}()};"},"hash":"7db38fb72a4617f6191bfaaea6755b24","cacheData":{"env":{}}}