@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
1 lines • 22.9 kB
JavaScript
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[1878],{11878(t,s,i){i.d(s,{T:()=>a});var o=i(55537),e=i(83661);class h{constructor(t,s,i){if(t instanceof h)return this.data=t.data,this.N=t.N,this.M=t.M,t.data=null,t.N=0,void(t.M=0);this.data=t,this.N=s,this.M=i}assignCopy(t){return this===t||((0,o.g)(this.N*this.M===t.N*t.M),this.data.set(t.data),this.N=t.N,this.M=t.M),this}setZero(){return this.data?.fill(0),this}setIdentity(){for(let t=0;t<this.N;t++)for(let s=0;s<this.M;s++)this.setRowCol(t,s,t===s?1:0);return this}rows(){return this.N}cols(){return this.M}row(t){return(0,o.g)(0),{}}set(t,s){return this.data[t]=s,this}setRowCol(t,s,i){return this.data[t*this.M+s]=i,this}at(t){return this.data[t]}atRowCol(t,s){return this.data[t*this.M+s]}mulScalar(t,s){(0,o.g)(0)}mul(t,s){if((0,o.g)(this.M===t.rows()),(0,o.g)(this.N===s.rows()),(0,o.g)(t.cols()===s.cols()),s===this){const i=new Float64Array(this.N*this.M),o=new h(i,this.N,this.M);return this.mul(t,o),void s.assignCopy(o)}if(s===t){const i=new Float64Array(t.N*t.M),o=new h(i,t.N,t.M);return this.mul(t,o),void s.assignCopy(o)}const i=t.cols();for(let o=0;o<this.N;o++)for(let e=0;e<i;e++){let i=0;for(let s=0;s<this.M;s++)i+=this.atRowCol(o,s)*t.atRowCol(s,e);s.setRowCol(o,e,i)}}mulTranspose(t,s){if((0,o.g)(this.M===t.cols()),(0,o.g)(this.N===s.rows()),(0,o.g)(t.rows()===s.cols()),s===this){const i=new Float64Array(this.N*this.M),o=new h(i,this.N,this.M);return this.mulTranspose(t,o),void s.assignCopy(o)}if(s===t){const i=new Float64Array(t.N*t.M),o=new h(i,t.N,t.M);return this.mulTranspose(t,o),void s.assignCopy(o)}const i=t.rows();for(let o=0;o<this.N;o++)for(let e=0;e<i;e++){let i=0;for(let s=0;s<this.M;s++)i+=this.atRowCol(o,s)*t.atRowCol(e,s);s.setRowCol(o,e,i)}}mulLeft(t,s){(0,o.g)(0)}mulLeftTranspose(t,s){(0,o.g)(0)}mulDiag(t,s){if((0,o.g)(this.M===t.N*t.M),(0,o.g)(this.N===s.rows()),(0,o.g)(this.M===s.cols()),s===this){const i=new Float64Array(this.N*this.M),o=new h(i,this.N,this.M);return this.mulDiag(t,o),void s.assignCopy(o)}const i=this.M;for(let o=0;o<this.N;o++)for(let e=0;e<i;e++)s.setRowCol(o,e,this.atRowCol(o,e)*t.at(e))}transposeInPlace(){if(this.N===this.M){for(let t=0;t<this.N;t++)for(let s=t+1;s<this.M;s++){const i=this.atRowCol(t,s);this.setRowCol(t,s,this.atRowCol(s,t)),this.setRowCol(s,t,i)}return this}const t=new Float64Array(this.N*this.M),s=new h(t,this.N,this.M);return s.assignCopy(this),this.M=(0,e.c)(this.N,this.N=this.M),s.transpose(this),this}transpose(t){if(this!==t){h.checkDims(t,this.M,this.N);for(let s=0;s<this.N;s++)for(let i=0;i<this.M;i++)t.setRowCol(i,s,this.atRowCol(s,i))}else t.transposeInPlace()}add(t,s){}svd(t,s,i,e=!1){if(h.checkDims(t,this.N,this.M),h.checkDims(s,this.M,1),h.checkDims(i,this.M,this.M),e){if((0,o.g)(this.N===this.M),!this.symmetricEigen(s,i))return!1;for(let t=0;t<this.M;++t)s.at(t)<0&&s.set(t,0);return t.assignCopy(i),!0}let r,a,l,y,n,x,w,u=0,C=0,f=0,R=0,d=0;const c=this.M,M=this.N;t.assignCopy(this);const m=new Float64Array(c),N=new h(m,c,1),b=(t,s)=>s>=0?Math.abs(t):-Math.abs(t),g=(t,s)=>{if((t=Math.abs(t))>(s=Math.abs(s))){const i=s/t;return t*Math.sqrt(i*i+1)}if(s>0){const i=t/s;return s*Math.sqrt(i*i+1)}return 0};for(let i=0;i<c;i++){if(u=i+1,N.set(i,R*f),f=y=R=0,i<M){for(let s=i;s<M;s++)R+=Math.abs(t.atRowCol(s,i));if(R){for(let s=i;s<M;s++)t.setRowCol(s,i,t.atRowCol(s,i)/R),y+=t.atRowCol(s,i)*t.atRowCol(s,i);a=t.atRowCol(i,i),f=-b(Math.sqrt(y),a),l=a*f-y,t.setRowCol(i,i,a-f);for(let s=u;s<c;s++){y=0;for(let o=i;o<M;o++)y+=t.atRowCol(o,i)*t.atRowCol(o,s);a=y/l;for(let o=i;o<M;o++)t.setRowCol(o,s,t.atRowCol(o,s)+a*t.atRowCol(o,i))}for(let s=i;s<M;s++)t.setRowCol(s,i,t.atRowCol(s,i)*R)}}if(s.set(i,R*f),f=y=R=0,i<M&&i!==c-1){for(let s=u;s<c;s++)R+=Math.abs(t.atRowCol(i,s));if(R){for(let s=u;s<c;s++)t.setRowCol(i,s,t.atRowCol(i,s)/R),y+=t.atRowCol(i,s)*t.atRowCol(i,s);a=t.atRowCol(i,u),f=-b(Math.sqrt(y),a),l=a*f-y,t.setRowCol(i,u,a-f);for(let s=u;s<c;s++)N.set(s,t.atRowCol(i,s)/l);for(let s=u;s<M;s++){y=0;for(let o=u;o<c;o++)y+=t.atRowCol(s,o)*t.atRowCol(i,o);for(let i=u;i<c;i++)t.setRowCol(s,i,t.atRowCol(s,i)+y*N.at(i))}for(let s=u;s<c;s++)t.setRowCol(i,s,t.atRowCol(i,s)*R)}}const o=Math.abs(s.at(i))+Math.abs(N.at(i));d=o>d?o:d}for(let s=c-1;s>=0;s--){if(s<c-1){if(f){for(let o=u;o<c;o++)i.setRowCol(o,s,t.atRowCol(s,o)/t.atRowCol(s,u)/f);for(let o=u;o<c;o++){y=0;for(let e=u;e<c;e++)y+=t.atRowCol(s,e)*i.atRowCol(e,o);for(let t=u;t<c;t++)i.setRowCol(t,o,i.atRowCol(t,o)+y*i.atRowCol(t,s))}}for(let t=u;t<c;t++)i.setRowCol(s,t,0),i.setRowCol(t,s,0)}i.setRowCol(s,s,1),f=N.at(s),u=s}for(let i=(M<c?M:c)-1;i>=0;i--){u=i+1,f=s.at(i);for(let s=u;s<c;s++)t.setRowCol(i,s,0);if(f){f=1/f;for(let s=u;s<c;s++){y=0;for(let o=u;o<M;o++)y+=t.atRowCol(o,i)*t.atRowCol(o,s);a=y/t.atRowCol(i,i)*f;for(let o=i;o<M;o++)t.setRowCol(o,s,t.atRowCol(o,s)+a*t.atRowCol(o,i))}for(let s=i;s<M;s++)t.setRowCol(s,i,t.atRowCol(s,i)*f)}else for(let s=i;s<M;s++)t.setRowCol(s,i,0);t.setRowCol(i,i,t.atRowCol(i,i)+1)}for(let o=c-1;o>=0;o--)for(let e=1;;e++){let h=1;for(u=o;u>=0;u--){if(C=u-1,Math.abs(N.at(u))+d===d){h=0;break}if(Math.abs(s.at(C))+d===d)break}if(h){r=0,y=1;for(let i=u;i<=o&&(a=y*N.at(i),N.set(i,N.at(i)*r),Math.abs(a)+d!==d);i++){f=s.at(i),l=g(a,f),s.set(i,l),l=1/l,r=f*l,y=-a*l;for(let s=0;s<M;s++)x=t.atRowCol(s,C),w=t.atRowCol(s,i),t.setRowCol(s,C,x*r+w*y),t.setRowCol(s,i,w*r-x*y)}}if(w=s.at(o),u===o){if(w<0){s.set(o,-w);for(let t=0;t<c;t++)i.setRowCol(t,o,-i.atRowCol(t,o))}break}if(100===e)return!1;n=s.at(u),C=o-1,x=s.at(C),f=N.at(C),l=N.at(o),a=((x-w)*(x+w)+(f-l)*(f+l))/(2*l*x),f=g(a,1),a=((n-w)*(n+w)+l*(x/(a+b(f,a))-l))/n,r=y=1;for(let o=u;o<=C;o++){const e=o+1;f=N.at(e),x=s.at(e),l=y*f,f*=r,w=g(a,l),N.set(o,w),r=a/w,y=l/w,a=n*r+f*y,f=f*r-n*y,l=x*y,x*=r;for(let t=0;t<c;t++)n=i.atRowCol(t,o),w=i.atRowCol(t,e),i.setRowCol(t,o,n*r+w*y),i.setRowCol(t,e,w*r-n*y);w=g(a,l),s.set(o,w),w&&(w=1/w,r=a*w,y=l*w),a=r*f+y*x,n=r*x-y*f;for(let s=0;s<M;s++)x=t.atRowCol(s,o),w=t.atRowCol(s,e),t.setRowCol(s,o,x*r+w*y),t.setRowCol(s,e,w*r-x*y)}N.set(u,0),N.set(o,a),s.set(o,n)}const p=new Float64Array(this.N),P=new Float64Array(this.M),v=new h(p,this.N,1),T=new h(P,this.M,1);let I=1;do{I*=3,I++}while(I<=this.M);do{I/=3,I=Math.trunc(I);for(let o=I;o<this.M;o++){const e=s.at(o);for(let s=0;s<this.N;s++)v.set(s,t.atRowCol(s,o));for(let t=0;t<this.M;t++)T.set(t,i.atRowCol(t,o));let h=o;for(;s.at(h-I)<e;){s.set(h,s.at(h-I));for(let s=0;s<this.N;s++)t.setRowCol(s,h,t.atRowCol(s,h-I));for(let t=0;t<this.M;t++)i.setRowCol(t,h,i.atRowCol(t,h-I));if(h-=I,h<I)break}s.set(h,e);for(let s=0;s<this.N;s++)t.setRowCol(s,h,v.at(s));for(let t=0;t<this.M;t++)i.setRowCol(t,h,T.at(t))}}while(I>1);for(let s=0;s<this.M;s++){let o=0;for(let i=0;i<this.N;i++)t.atRowCol(i,s)<0&&o++;for(let t=0;t<this.M;t++)i.atRowCol(t,s)<0&&o++;if(o>Math.trunc((this.N+this.M)/2)){for(let i=0;i<this.N;i++)t.setRowCol(i,s,-t.atRowCol(i,s));for(let t=0;t<this.M;t++)i.setRowCol(t,s,-i.atRowCol(t,s))}}return!0}isSymmetric(){if(this.N!==this.M)return!1;for(let t=0;t<this.N;t++)for(let s=t+1;s<this.M;s++)if(this.atRowCol(t,s)!==this.atRowCol(s,t))return!1;return!0}isZero(){return(0,o.g)(0),!1}isIdentity(){return(0,o.g)(0),!1}equals(t,s){if(void 0!==s&&(0,o.g)(0),this.N!==t.N||this.M!==t.M)return!1;for(let s=0;s<this.N*this.M;s++)if(this.data[s]!==t.data[s])return!1;return!0}maxElement(){return(0,o.g)(0),0}minElement(){return(0,o.g)(0),0}determinant(){if((0,o.g)(this.N===this.M),1===this.N)return this.data[0];if(2===this.N)return this.data[0]*this.data[3]-this.data[1]*this.data[2];if(3===this.N){const t=this;return t.atRowCol(0,0)*(t.atRowCol(1,1)*t.atRowCol(2,2)-t.atRowCol(1,2)*t.atRowCol(2,1))-t.atRowCol(0,1)*(t.atRowCol(1,0)*t.atRowCol(2,2)-t.atRowCol(2,0)*t.atRowCol(1,2))+t.atRowCol(0,2)*(t.atRowCol(1,0)*t.atRowCol(2,1)-t.atRowCol(1,1)*t.atRowCol(2,0))}const t=new Float64Array(this.N*this.N),s=new h(t,this.N,this.N),i=new Float64Array(this.N);if(!this.luDecomposition(s,i))return 0;let e=1;for(let t=0;t<this.N;t++)e*=s.atRowCol(t,t),i[t]!==t&&(e=-e);return e}submatrix(t,s,i){(0,o.g)(0)}inverse(t){(0,o.g)(0)}pseudoInverse(t,s=!1,i=2220446049250313e-31){if(t.setZero(),1===this.N&&1===this.M)return 0!==this.atRowCol(0,0)?t.setRowCol(0,0,1/this.atRowCol(0,0)):t.setRowCol(0,0,0),!0;if(2===this.N&&2===this.M){const s=this.atRowCol(0,0)*this.atRowCol(1,1)-this.atRowCol(0,1)*this.atRowCol(1,0),i=1e-5*(Math.abs(this.atRowCol(0,0)*this.atRowCol(1,1))+Math.abs(this.atRowCol(0,1)*this.atRowCol(1,0)));if(Math.abs(s)>i)return t.setRowCol(0,0,this.atRowCol(1,1)/s),t.setRowCol(0,1,-this.atRowCol(0,1)/s),t.setRowCol(1,0,-this.atRowCol(1,0)/s),t.setRowCol(1,1,this.atRowCol(0,0)/s),!0}const o=new Float64Array(this.N*this.M),e=new h(o,this.N,this.M),r=new Float64Array(this.M),a=new h(r,this.M,1),l=new Float64Array(this.M*this.M),y=new h(l,this.M,this.M);if(!this.svd(e,a,y,s))return!1;const n=Math.max(this.N,this.M),x=i*Math.abs(a.at(0))*n;for(let t=0;t<this.M;t++)a.at(t)>x?a.set(t,1/a.at(t)):a.set(t,0);return y.mulDiag(a,t),t.mulTranspose(e,t),!0}luDecomposition(t,s){return(0,o.g)(0),!1}symmetricEigen(t,s){(0,o.g)(this.rows()===this.cols()),(0,o.g)(this.rows()===t.rows()),(0,o.g)(s.rows()===s.cols()&&s.rows()===this.rows()),(0,o.g)(this.isSymmetric());const i=new Float64Array(this.N*this.M),e=new h(i,this.N,this.M);e.assignCopy(this);const r=100/Number.EPSILON,a=this.rows(),l=new Float64Array(a),y=new Float64Array(a),n=new h(l,a,1),x=new h(y,a,1);for(let s=0;s<a;s++)n.set(s,e.atRowCol(s,s)),t.set(s,e.atRowCol(s,s)),x.set(s,0);s.setIdentity();const w=()=>{const i=n;s.transposeInPlace();let o=1;do{o*=3,o++}while(o<=a);do{o/=3,o=Math.trunc(o);for(let e=o;e<a;e++){const h=t.at(e),r=Math.abs(h);for(let t=0;t<this.M;t++)i.set(t,s.atRowCol(t,e));let a=e;for(;Math.abs(t.at(a-o))<r;){t.set(a,t.at(a-o));for(let t=0;t<this.M;t++)s.setRowCol(t,a,s.atRowCol(t,a-o));if(a-=o,a<o)break}if(a!==e){t.set(a,h);for(let t=0;t<this.M;t++)s.setRowCol(t,a,i.at(t))}}}while(o>1)};for(let i=1;;i++){let o=0;for(let t=1;t<a;t++)for(let s=0;s<t;s++)o+=Math.abs(e.atRowCol(t,s));if(0===o)return w(),!0;const h=i<4?.2*o/(a*a):0;for(let o=0;o<a;o++)for(let l=o+1;l<a;l++){let y=r*Math.abs(e.atRowCol(l,o));if(i>4&&y<=Math.abs(t.at(o))&&y<=Math.abs(t.at(l)))e.setRowCol(l,o,0);else if(Math.abs(e.atRowCol(l,o))>h){let i,h=t.at(l)-t.at(o);if(y<Math.abs(h))i=e.atRowCol(l,o)/h;else{const t=.5*h/e.atRowCol(l,o);i=1/(Math.abs(t)+Math.sqrt(1+t*t)),t<0&&(i=-i)}const r=1/Math.sqrt(1+i*i),n=i*r,w=n/(1+r);h=i*e.atRowCol(l,o),x.set(o,x.at(o)-h),x.set(l,x.at(l)+h),t.set(o,t.at(o)-h),t.set(l,t.at(l)+h),e.setRowCol(l,o,0);let u=0;for(;u<o;u++)y=e.atRowCol(o,u),h=e.atRowCol(l,u),e.setRowCol(o,u,y-n*(h+y*w)),e.setRowCol(l,u,h+n*(y-h*w));for(u++;u<l;u++)y=e.atRowCol(u,o),h=e.atRowCol(l,u),e.setRowCol(u,o,y-n*(h+y*w)),e.setRowCol(l,u,h+n*(y-h*w));for(u++;u<a;u++)y=e.atRowCol(u,o),h=e.atRowCol(u,l),e.setRowCol(u,o,y-n*(h+y*w)),e.setRowCol(u,l,h+n*(y-h*w));for(u=0;u<a;u++)y=s.atRowCol(o,u),h=s.atRowCol(l,u),s.setRowCol(o,u,y-n*(h+y*w)),s.setRowCol(l,u,h+n*(y-h*w))}}for(let s=0;s<a;s++)n.set(s,n.at(s)+x.at(s)),t.set(s,n.at(s)),x.set(s,0)}}static checkDims(t,s,i){(0,o.g)(t.rows()===s&&t.cols()===i)}}class r extends h{constructor(t){if(t.copy){const s=new Float64Array(t.copy.N*t.copy.M);return super(s,t.copy.N,t.copy.M),this.buffer=s,void this.assignCopy(t.copy)}const s=new Float64Array(t.NN*t.MM);super(s,t.NN,t.MM),this.buffer=s,t.initializerList&&(0,e.b)(this.buffer,t.initializerList,0,0,t.initializerList.length)}assignCopy(t){return this===t||super.assignCopy(t),this}}class a{constructor(t){this.m_TransformationType=1,void 0===t?this.setIdentity():t instanceof a?this.set(t):this.setScale(t)}set(t){return this.xx=t.xx,this.xy=t.xy,this.xd=t.xd,this.yx=t.yx,this.yy=t.yy,this.yd=t.yd,this}clone(){return(new a).set(this)}setZero(){this.xx=0,this.yy=0,this.xy=0,this.yx=0,this.xd=0,this.yd=0}isEqual(t){return this===t||this.xx===t.xx&&this.xy===t.xy&&this.xd===t.xd&&this.yx===t.yx&&this.yy===t.yy&&this.yd===t.yd}transformInPlace(t){const s=this.xx*t.x+this.xy*t.y+this.xd,i=this.yx*t.x+this.yy*t.y+this.yd;t.x=s,t.y=i}transform(t){const s=t.clone();return this.transformInPlace(s),s}queryTransform(t,s){const i=this.xx*t.x+this.xy*t.y+this.xd,o=this.yx*t.x+this.yy*t.y+this.yd;s.setCoords(i,o)}transformEnvInPlace(t){if(t.isEmpty())return;const s=(0,e.m)(e.P,4);t.queryCorners(s),this.transformPoints2D(s,4,s),t.setFromPoints(s,4)}queryTransformEnv(t,s){(0,o.g)(0)}transformPoints2D(t,s,i){for(let o=0;o<s;++o)this.queryTransform(t[o],i[o])}transformInterleavedPoints(t,s,i){s*=2;const o=e.P.getNAN();for(let e=0;e<s;e+=2)o.x=t[e],o.y=t[e+1],this.transformInPlace(o),i[e]=o.x,i[e+1]=o.y}multiply(t){return a.st_multiply(this,t,this),this}mulLeft(t){return(0,o.g)(0),this}static st_multiply(t,s,i){const o=t.xx*s.xx+t.yx*s.xy,e=t.xy*s.xx+t.yy*s.xy,h=t.xd*s.xx+t.yd*s.xy+s.xd,r=t.xx*s.yx+t.yx*s.yy,a=t.xy*s.yx+t.yy*s.yy,l=t.xd*s.yx+t.yd*s.yy+s.yd;i.xx=o,i.xy=e,i.xd=h,i.yx=r,i.yy=a,i.yd=l}getCoefficients(t){(0,o.g)(t.length>=6),t[0]=this.xx,t[1]=this.xy,t[2]=this.xd,t[3]=this.yx,t[4]=this.yy,t[5]=this.yd}setCoefficients(t){(0,o.g)(t.length>=6),this.xx=t[0],this.xy=t[1],this.xd=t[2],this.yx=t[3],this.yy=t[4],this.yd=t[5]}copyTo(t){(0,o.g)(0)}initializeFromRect(t,s){t.isEmpty()||s.isEmpty()||!t.width()||!t.height()?this.setZero():(this.xy=this.yx=0,this.xx=s.width()/t.width(),this.yy=s.height()/t.height(),this.xd=s.xmin-t.xmin*this.xx,this.yd=s.ymin-t.ymin*this.yy)}initializeFromRectIsotropic(t,s){if(t.isEmpty()||!t.width()||!t.height()||s.isEmpty())this.setZero();else{this.yx=0,this.xy=0,this.xx=s.width()/t.width(),this.yy=s.height()/t.height(),this.xx>this.yy?this.xx=this.yy:this.yy=this.xx;const i=s.getCenter(),o=t.getCenter();this.xd=i.x-o.x*this.xx,this.yd=i.y-o.y*this.yy}}initializeFromTwoPointsArray(t,s){if(t[0].equals(s[0])&&t[1].equals(s[1]))return void this.setIdentity();if(t[0].equals(t[1])){if(s[0].equals(s[1]))return void this.setShift(s[0].sub(t[0]));(0,o.a)("")}if(!t[0].equals(t[1])&&s[0].equals(s[1]))return this.setZero(),void this.shift(s[0]);this.setShiftCoords(-t[0].x,-t[0].y);const i=e.P.distance(t[0],t[1]),h=e.P.distance(s[0],s[1]),r=h/i;this.scale(r,r);const a=t[1].sub(t[0]);a.divThis(i);const l=s[1].sub(s[0]);l.divThis(h);const y=a.crossProduct(l),n=a.dotProduct(l);this.rotate(n,y),this.shiftCoords(s[0].x,s[0].y)}initializeFromTwoPoints(t,s,i,o){const e=[t,s],h=[i,o];this.initializeFromTwoPointsArray(e,h)}transformSizeInPlace(t){(0,o.g)(0)}transformSize(t,s){(0,o.g)(0)}transformTol(t){return(0,o.g)(0),0}transformWithoutTranslateArray(t,s,i){for(let o=0;o<s;++o)this.transformWithoutTranslate(t[o],i[o])}transformWithoutTranslateInPlace(t){const s=this.xx*t.x+this.xy*t.y,i=this.yx*t.x+this.yy*t.y;t.setCoords(s,i)}transformWithoutTranslate(t,s){const i=this.xx*t.x+this.xy*t.y,o=this.yx*t.x+this.yy*t.y;s.setCoords(i,o)}setIdentity(){this.xx=1,this.xy=0,this.xd=0,this.yx=0,this.yy=1,this.yd=0}isIdentity(){return!(1!==this.xx||1!==this.yy||this.xy||this.xd||this.yx||this.yd)}isIdentityTol(t){const s=t*t;return!((0,e.a)(this.xd)+(0,e.a)(this.yd)>s||(0,e.a)(this.xy+this.xd)+(0,e.a)(this.yy+this.yd-1)>s||(0,e.a)(this.xx+this.xd-1)+(0,e.a)(this.yx+this.yd)>s)}isReflective(){return this.xx*this.yy-this.yx*this.xy<0}isUniform(t){const s=this.xx*this.xx+this.yx*this.yx,i=this.xy*this.xy+this.yy*this.yy,o=(s+i)*t;return Math.abs(s-i)<=o&&Math.abs(this.xx*this.xy+this.yx*this.yy)<=o}isUniformNoRotation(){return 0!==this.xx&&Math.abs(this.xx)===Math.abs(this.yy)&&0===this.xy&&0===this.yx}isTranslate(){return 1===this.xx&&1===this.yy&&!this.xy&&!this.yx}isTranslateTol(t){const s=new e.P;return s.setCoords(0,1),this.transformWithoutTranslateInPlace(s),s.y-=1,!(s.sqrLength()>t*t)&&(s.setCoords(1,0),this.transformWithoutTranslateInPlace(s),s.x-=1,s.sqrLength()<=t*t)}isOrthonormal(t){const s=new a;return s.xx=this.xx*this.xx+this.xy*this.xy,s.xy=this.xx*this.yx+this.xy*this.yy,s.yx=this.yx*this.xx+this.yy*this.xy,s.yy=this.yx*this.yx+this.yy*this.yy,s.xd=0,s.yd=0,s.isIdentityTol(t)}isDegenerate(t){return Math.abs(this.xx*this.yy-this.yx*this.xy)<=2*t*(Math.abs(this.xx*this.yy)+Math.abs(this.yx*this.xy))}isZero(){return 0===this.xx&&0===this.yy&&0===this.xy&&0===this.yx&&0===this.xd&&0===this.yd}isScaleAndTranslateTol(t){return this.xy*this.xy+this.yx*this.yx<=(this.xx*this.xx+this.yy*this.yy)*t}setTranslate(t,s){return this.xx=1,this.xy=0,this.xd=t,this.yx=0,this.yy=1,this.yd=s,this}setShiftCoords(t,s){return this.xx=1,this.xy=0,this.xd=t,this.yx=0,this.yy=1,this.yd=s,this}setShift(t){return this.xx=1,this.xy=0,this.xd=t.x,this.yx=0,this.yy=1,this.yd=t.y,this}setScaleCoords(t,s){return this.xx=t,this.xy=0,this.xd=0,this.yx=0,this.yy=s,this.yd=0,this}setScale(t){return this.setScaleCoords(t,t),this}setFlipX(t,s){return this.xx=-1,this.xy=0,this.xd=t+s,this.yx=0,this.yy=1,this.yd=0,this}setFlipY(t,s){return this.xx=1,this.xy=0,this.xd=0,this.yx=0,this.yy=-1,this.yd=t+s,this}setShear(t,s){return this.xx=1,this.xy=t,this.xd=0,this.yx=s,this.yy=1,this.yd=0,this}scale(t,s){return this.xx*=t,this.xy*=t,this.xd*=t,this.yx*=s,this.yy*=s,this.yd*=s,this}setRotateAngle(t){return this.setRotate(Math.cos(t),Math.sin(t))}setRotate(t,s){return this.xx=t,this.xy=-s,this.xd=0,this.yx=s,this.yy=t,this.yd=0,this}setRotateAngleAbout(t,s){return this.setRotateAbout(Math.cos(t),Math.sin(t),s)}setRotateAbout(t,s,i){return this.setTranslate(-i.x,-i.y),this.rotate(t,s),this.translate(i.x,i.y)}setSwapCoordinates(){return this.xx=0,this.xy=1,this.xd=0,this.yx=1,this.yy=0,this.yd=0,this}setRotateCw90(){return this.xx=0,this.xy=1,this.xd=0,this.yx=-1,this.yy=0,this.yd=0,this}setRotateCcw90(){return this.xx=0,this.xy=-1,this.xd=0,this.yx=1,this.yy=0,this.yd=0,this}shiftCoords(t,s){return this.xd+=t,this.yd+=s,this}shift(t){return this.xd+=t.x,this.yd+=t.y,this}translate(t,s){return this.xd+=t,this.yd+=s,this}flipX(t,s){return this.xx=-this.xx,this.xy=-this.xy,this.xd=t+s-this.xd,this}flipY(t,s){return this.yx=-this.yx,this.yy=-this.yy,this.yd=t+s-this.yd,this}shear(t,s){const i=new a;return i.setShear(t,s),this.multiply(i)}rotateAngle(t){const s=new a;return s.setRotateAngle(t),this.multiply(s)}rotate(t,s){const i=new a;return i.setRotate(t,s),this.multiply(i)}rotateAbout(t,s,i){return this.translate(-i.x,-i.y),this.rotate(t,s),this.translate(i.x,i.y)}rotateAngleAbout(t,s){return this.rotateAbout(Math.cos(t),Math.sin(t),s)}setInvert(t){return this.set(t),this.invertThis()}invertThis(){let t=this.xx*this.yy-this.xy*this.yx;if(0===t)return this.setZero(),this;t=1/t;const s=(this.xy*this.yd-this.xd*this.yy)*t,i=(this.xd*this.yx-this.xx*this.yd)*t,o=this.yy*t,e=-this.xy*t,h=-this.yx*t,r=this.xx*t;return this.xd=s,this.yd=i,this.xx=o,this.yy=r,this.xy=e,this.yx=h,this}invertPrecise(t){return this.set(t),this.invertPreciseThis()}invertPreciseThis(){const t=e.M.constructDouble(this.xy),s=e.M.constructDouble(this.xx),i=s.mulDouble(this.yy).sub(t.mulDouble(this.yx));if(i.isZero())return this.setZero(),this;const o=i.clone();o.invertThis();const h=e.M.constructDouble(this.xd),r=t.mulDouble(this.yd).sub(h.mulDouble(this.yy)).mul(o).toDouble(),a=h.mulDouble(this.yx).sub(s.mulDouble(this.yd)).mul(o).toDouble(),l=o.mulDouble(this.yy).toDouble(),y=o.mulDouble(-this.xy).toDouble(),n=o.mulDouble(-this.yx).toDouble(),x=o.mulDouble(this.xx).toDouble();return this.xd=r,this.yd=a,this.xx=l,this.yy=x,this.xy=y,this.yx=n,this}extractScaleTransform(t,s){const i=Math.sqrt(this.xx*this.xx+this.xy*this.xy),o=Math.sqrt(this.yx*this.yx+this.yy*this.yy);s.setScaleCoords(1/i,1/o),s.multiply(this),t.setScaleCoords(i,o)}setFromTwoTriangles(t,s){let i=!0;for(let o=0;o<3;++o)i=i&&t[o].equals(s[o]);if(i)return this.setIdentity(),!0;const o=new e.P;o.setSub(t[0],t[1]);const h=new e.P;h.setSub(t[0],t[2]);const r=new e.P;r.setSub(s[0],s[1]);const a=new e.P;a.setSub(s[0],s[2]);const l=4*Number.EPSILON*(Math.abs(o.x*h.y)+Math.abs(h.x*o.y));let y=o.x*h.y-o.y*h.x;return Math.abs(y)>l?(y=1/y,this.xx=(r.x*h.y-o.y*a.x)*y,this.xy=(o.x*a.x-r.x*h.x)*y,this.yx=(r.y*h.y-o.y*a.y)*y,this.yy=(o.x*a.y-r.y*h.x)*y,this.xd=s[0].x-(this.xx*t[0].x+this.xy*t[0].y),this.yd=s[0].y-(this.yx*t[0].x+this.yy*t[0].y),!0):(this.setZero(),!1)}initializeFromControlPoints(t,s,i,h,n=null){return 0===s?(this.setIdentity(),void(n&&n.setIdentity())):1===s?(this.setShift(h[0].sub(i[0])),void(n&&n.setShift(i[0].sub(h[0])))):(s<3&&(t=1),void(4===t&&s>2?function(t,s,i,h,a){const l=e.P.average(i,s),n=e.P.average(h,s),x=new r({NN:2,MM:2});x.setZero();const w=new r({NN:2,MM:2});w.setZero();for(let t=0;t<s;++t)x.setRowCol(0,0,x.atRowCol(0,0)+(i[t].x-l.x)*(i[t].x-l.x)),x.setRowCol(0,1,x.atRowCol(0,1)+(i[t].x-l.x)*(i[t].y-l.y)),x.setRowCol(1,1,x.atRowCol(1,1)+(i[t].y-l.y)*(i[t].y-l.y)),w.setRowCol(0,0,w.atRowCol(0,0)+(h[t].x-n.x)*(i[t].x-l.x)),w.setRowCol(0,1,w.atRowCol(0,1)+(h[t].x-n.x)*(i[t].y-l.y)),w.setRowCol(1,0,w.atRowCol(1,0)+(h[t].y-n.y)*(i[t].x-l.x)),w.setRowCol(1,1,w.atRowCol(1,1)+(h[t].y-n.y)*(i[t].y-l.y));x.setRowCol(1,0,x.atRowCol(0,1));const u=new r({NN:2,MM:2});x.pseudoInverse(u,!0)||(0,o.b)("Failed to compute pseudo inverse"),w.mul(u,w),y(t,w);const C=l.clone();t.transformInPlace(C),t.xd=n.x-C.x,t.yd=n.y-C.y,a&&(w.pseudoInverse(u,!1)||(0,o.b)("Failed to compute pseudo inverse"),y(a,u),a.transformInPlace(n),a.xd=l.x-n.x,a.yd=l.y-n.y)}(this,s,i,h,n):function(t,s,i,h,n,x){(0,o.g)(1===t||0===t||2===t||3===t),s.setIdentity();const w=e.P.average(h,i),u=e.P.average(n,i);if((0,o.g)(t<l.length&&t>0),8&l[t]){const e=new r({NN:2,MM:2});e.setZero();for(let t=0;t<i;++t)e.setRowCol(0,0,e.atRowCol(0,0)+(n[t].x-u.x)*(h[t].x-w.x)),e.setRowCol(1,0,e.atRowCol(1,0)+(n[t].x-u.x)*(h[t].y-w.y)),e.setRowCol(0,1,e.atRowCol(0,1)+(n[t].y-u.y)*(h[t].x-w.x)),e.setRowCol(1,1,e.atRowCol(1,1)+(n[t].y-u.y)*(h[t].y-w.y));const x=new r({NN:2,MM:2}),C=new r({NN:2,MM:1}),f=new r({NN:2,MM:2});e.svd(x,C,f)||(0,o.b)("Failed to compute svd");const R=new r({NN:2,MM:2});x.transpose(R);const d=new r({NN:2,MM:2});f.mul(R,d),32&l[t]||d.determinant()<0&&(R.setRowCol(1,0,-R.atRowCol(1,0)),R.setRowCol(1,1,-R.atRowCol(1,1)),f.mul(R,d));const c=new a;y(c,d),s.set(c)}if(2&l[t]){let t=0,o=0;for(let e=0;e<i;++e){const i=h[e].sub(w);t+=i.sqrLength(),s.transformInPlace(i),o+=i.dotProduct(n[e].sub(u))}if(0===t)0===o?s.setIdentity():s.setZero();else{const i=o/t;s.scale(i,i)}}else(0,o.g)(!(4&l[t]));const C=w.clone();s.transformInPlace(C),s.xd=u.x-C.x,s.yd=u.y-C.y,x&&(x.set(s),x.invertThis(),x.isZero()&&(x.xd=w.x,x.yd=w.y))}(t,this,s,i,h,n)))}calculateErrors(t,s,i,h){(0,o.g)(t>0&&null!==s&&null!==i);let r=0;for(let o=0;o<t;++o){const t=this.transform(s[o]),a=e.P.sqrDistance(i[o],t);r+=a,h&&(h[o]=Math.sqrt(a))}return Math.sqrt(r/t)}}const l=[43,11,41,9,61];function y(t,s){(0,o.g)(!(2!==s.rows()&&3!==s.rows()||2!==s.cols()&&3!==s.rows())),t.xx=s.atRowCol(0,0),t.xy=s.atRowCol(0,1),t.yx=s.atRowCol(1,0),t.yy=s.atRowCol(1,1),3===s.cols()?(t.xd=s.atRowCol(0,2),t.yd=s.atRowCol(1,2)):(t.xd=0,t.yd=0)}}}]);