import{orient2d as t}from"robust-predicates";const s=Math.pow(2,-52);const i=new Uint32Array(512);class Delaunator{static from(t,s=defaultGetX,i=defaultGetY){const n=t.length;const e=new Float64Array(n*2);for(let h=0;h>1;if(s>0&&typeof t[0]!=="number")throw new Error("Expected coords to contain numbers.");this.coords=t;const i=Math.max(2*s-5,0);this._triangles=new Uint32Array(i*3);this._halfedges=new Int32Array(i*3);this._hashSize=Math.ceil(Math.sqrt(s));this._hullPrev=new Uint32Array(s);this._hullNext=new Uint32Array(s);this._hullTri=new Uint32Array(s);this._hullHash=new Int32Array(this._hashSize);this._ids=new Uint32Array(s);this._dists=new Float64Array(s);this.update()}update(){const{coords:i,_hullPrev:n,_hullNext:e,_hullTri:h,_hullHash:l}=this;const r=i.length>>1;let o=Infinity;let c=Infinity;let a=-Infinity;let u=-Infinity;for(let t=0;ta&&(a=s);n>u&&(u=n);this._ids[t]=t}const _=(o+a)/2;const f=(c+u)/2;let d,y,g;for(let t=0,s=Infinity;t0){y=t;s=n}}let b=i[2*y];let p=i[2*y+1];let A=Infinity;for(let t=0;tn){t[s++]=e;n=h}}this.hull=t.subarray(0,s);this.triangles=new Uint32Array(0);this.halfedges=new Uint32Array(0);return}if(t(w,k,b,p,I,S)<0){const t=y;const s=b;const i=p;y=g;b=I;p=S;g=t;I=s;S=i}const m=circumcenter(w,k,b,p,I,S);this._cx=m.x;this._cy=m.y;for(let t=0;t0&&Math.abs(u-r)<=s&&Math.abs(_-o)<=s)continue;r=u;o=_;if(a===d||a===y||a===g)continue;let f=0;for(let t=0,s=this._hashKey(u,_);t=0){k=w;if(k===f){k=-1;break}}if(k===-1)continue;let b=this._addTriangle(k,a,e[k],-1,-1,h[k]);h[a]=this._legalize(b+2);h[k]=b;x++;let p=e[k];while(w=e[p],t(u,_,i[2*p],i[2*p+1],i[2*w],i[2*w+1])<0){b=this._addTriangle(p,a,w,h[a],-1,h[p]);h[a]=this._legalize(b+2);e[p]=p;x--;p=w}if(k===f)while(w=n[k],t(u,_,i[2*w],i[2*w+1],i[2*k],i[2*k+1])<0){b=this._addTriangle(w,a,k,-1,h[k],h[w]);this._legalize(b+2);h[w]=b;e[k]=k;x--;k=w}this._hullStart=n[a]=k;e[k]=n[p]=a;e[a]=p;l[this._hashKey(u,_)]=a;l[this._hashKey(i[2*k],i[2*k+1])]=k}this.hull=new Uint32Array(x);for(let t=0,s=this._hullStart;t0?3-i:1+i)/4}function dist(t,s,i,n){const e=t-i;const h=s-n;return e*e+h*h}function inCircle(t,s,i,n,e,h,l,r){const o=t-l;const c=s-r;const a=i-l;const u=n-r;const _=e-l;const f=h-r;const d=o*o+c*c;const y=a*a+u*u;const g=_*_+f*f;return o*(u*g-y*f)-c*(a*g-y*_)+d*(a*f-u*_)<0}function circumradius(t,s,i,n,e,h){const l=i-t;const r=n-s;const o=e-t;const c=h-s;const a=l*l+r*r;const u=o*o+c*c;const _=.5/(l*c-r*o);const f=(c*a-r*u)*_;const d=(l*u-o*a)*_;return f*f+d*d}function circumcenter(t,s,i,n,e,h){const l=i-t;const r=n-s;const o=e-t;const c=h-s;const a=l*l+r*r;const u=o*o+c*c;const _=.5/(l*c-r*o);const f=t+(c*a-r*u)*_;const d=s+(l*u-o*a)*_;return{x:f,y:d}}function quicksort(t,s,i,n){if(n-i<=20)for(let e=i+1;e<=n;e++){const n=t[e];const h=s[n];let l=e-1;while(l>=i&&s[t[l]]>h)t[l+1]=t[l--];t[l+1]=n}else{const e=i+n>>1;let h=i+1;let l=n;swap(t,e,h);s[t[i]]>s[t[n]]&&swap(t,i,n);s[t[h]]>s[t[n]]&&swap(t,h,n);s[t[i]]>s[t[h]]&&swap(t,i,h);const r=t[h];const o=s[r];while(true){do{h++}while(s[t[h]]o);if(l=l-i){quicksort(t,s,h,n);quicksort(t,s,i,l-1)}else{quicksort(t,s,i,l-1);quicksort(t,s,h,n)}}}function swap(t,s,i){const n=t[s];t[s]=t[i];t[i]=n}function defaultGetX(t){return t[0]}function defaultGetY(t){return t[1]}export{Delaunator as default};