@inovitas/infra3dapi 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/12.infra3dapi.js CHANGED
@@ -1 +1 @@
1
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("infra3dapi",[],e):"object"==typeof exports?exports.infra3dapi=e():t.infra3dapi=e()}(self,(()=>(()=>{"use strict";var t,e,r={7012:(t,e,r)=>{var a=r(17505),o=r.n(a);const h=self;class s{constructor(){this.offsetConstant=6,this.minimumPixelDistance=5,this.NCCCutoff=.75,this.alphaCutoff=1e-6,this.minAffParsNorm=.15,this.minRadParsNorm=1.5,this.omegaIterationStop=1.01,this.mue=.1,this.alphaMin=1e-9,this.autoradio=1,this.searchWindowPosQuality=0,this.onprogress=null,this._createFilterMatrix=function(){let t=[],e=[];t.push([-3,0,3],[-10,0,10],[-3,0,3]),e.push([-3,-10,-3],[0,0,0],[3,10,3]);let r={};return r.filterX=t,r.filterY=e,r},this._obtainGradient=function(t,e){let r=[],a=[];for(let o=0;o<t.length;++o){let h=Math.floor(o/e),s=Math.floor(o%e);if(0!=s&&s!=e-1&&0!=h&&h!=e-1){let h=(t[o+1]-t[o-1])/2;r.push(h);let s=(t[o+e]-t[o-e])/2;a.push(s)}}let o={};return o.gradientX=r,o.gradientY=a,o},this._interpolate2D=function(t,e,r,a){if("bilinear"==a){let a=t[Math.floor(e[1])][Math.floor(e[0])],o=t[Math.floor(e[1])][Math.floor(e[0])+1],h=t[Math.floor(e[1])+1][Math.floor(e[0])],s=t[Math.floor(e[1])+1][Math.floor(e[0])+1];return a=r[0]*a+r[1],o=r[0]*o+r[1],h=r[0]*h+r[1],s=r[0]*s+r[1],(e[0]-Math.floor(e[0]))*(e[1]-Math.floor(e[1]))*s+(1-e[0]+Math.floor(e[0]))*(e[1]-Math.floor(e[1]))*h+(e[0]-Math.floor(e[0]))*(1-e[1]+Math.floor(e[1]))*o+(1-e[0]+Math.floor(e[0]))*(1-e[1]+Math.floor(e[1]))*a}if("lanczos2"==a){(p=[]).push(Math.floor(e[0])-1),p.push(p[0]+1),p.push(p[0]+2),p.push(p[0]+3),(d=[]).push(Math.floor(e[1])-1),d.push(d[0]+1),d.push(d[0]+2),d.push(d[0]+3);for(var o=[],h=0;h<4;++h)if((M=Math.abs(e[0]-p[h]))>=2)o.push(0);else if(0==M)o.push(1);else{if(!(M<2&&M>=0))return 0;var s=Math.sin(Math.PI*M)/(Math.PI*M)*Math.sin(Math.PI*M/2)/(Math.PI*M/2);o.push(s)}for(var i=[],n=0;n<4;++n){var l=0;for(h=0;h<4;++h)l+=o[h]*(r[0]*t[d[n]][p[h]]+r[1]);i.push(l)}var f=[];for(h=0;h<4;++h)if((M=Math.abs(e[1]-d[h]))>=2)f.push(0);else if(0==M)f.push(1);else{if(!(M<2&&M>=0))return 0;s=Math.sin(Math.PI*M)/(Math.PI*M)*Math.sin(Math.PI*M/2)/(Math.PI*M/2),f.push(s)}var u=0;for(n=0;n<4;++n)u+=f[n]*i[n];return u}if("lanczos3"==a){var p,d;for((p=[]).push(Math.floor(e[0])-2),p.push(p[0]+1),p.push(p[0]+2),p.push(p[0]+3),p.push(p[0]+4),p.push(p[0]+5),(d=[]).push(Math.floor(e[1])-2),d.push(d[0]+1),d.push(d[0]+2),d.push(d[0]+3),d.push(d[0]+4),d.push(d[0]+5),o=[],h=0;h<6;++h)if((M=Math.abs(e[0]-p[h]))>=2)o.push(0);else if(0==M)o.push(1);else{if(!(M<2&&M>=0))return 0;s=Math.sin(Math.PI*M)/(Math.PI*M)*Math.sin(Math.PI*M/3)/(Math.PI*M/3),o.push(s)}for(i=[],n=0;n<6;++n){for(l=0,h=0;h<6;++h)l+=o[h]*(r[0]*t[d[n]][p[h]]+r[1]);i.push(l)}for(f=[],h=0;h<6;++h){var M;if((M=Math.abs(e[1]-d[h]))>=2)f.push(0);else if(0==M)f.push(1);else{if(!(M<2&&M>=0))return 0;s=Math.sin(Math.PI*M)/(Math.PI*M)*Math.sin(Math.PI*M/3)/(Math.PI*M/3),f.push(s)}}for(u=0,n=0;n<6;++n)u+=f[n]*i[n];return u}},this._fillAMatrix=function(t,e,r,a,o){let h=[],s=0;for(let o=-Math.floor(a/2);o<=Math.floor(a/2);++o)for(let i=-Math.floor(a/2);i<=Math.floor(a/2);++i){let a=[i,0],n=[o,0],l=[0,i],f=[0,o],u=[1,0],p=[0,1],d=e[s]*a[0]+r[s]*a[1],M=e[s]*n[0]+r[s]*n[1],c=e[s]*l[0]+r[s]*l[1],g=e[s]*f[0]+r[s]*f[1],m=e[s]*u[0]+r[s]*u[1],v=e[s]*p[0]+r[s]*p[1];h.push([]);let C=t[s],N=1;h[s].push(d,M,c,g,m,v,C,N),s++}return h},this._Adjustment=function(t,e,r,a){let h=0,s=0,i=0,n=0,l=[Math.floor(t.length/2),Math.floor(t[0].length/2)],f=[a[0],a[1]],u=[1,0,0,1,l[1],l[0],1,0],p=[1,0,0,1,f[1],f[0],1,0],d=this._generatePatch(t,u,r),M=this._Wallisfilter(d);if(0==M)return 0;let c=p,g=c,m=1e10,v=0,C=0,N=0,P=[],_=[],b=[],w=o().diag([1,1,1,1,1,1,1,1]);for(;0==h;){this.onprogress&&this.onprogress();let t=this._generatePatch(e,c,r+2);if(0==t)return 0;let a=this._obtainGradient(t,r+2),l=a.gradientX,f=a.gradientY,u=this._generatePatch(e,c,r),d=this._Wallisfilter(u);if(0==d)return 0;0==s&&0==s&&(m=o().sub(M,d),N=this._NormCrossCor(M,d)),P=this._fillAMatrix(d,l,f,r,i),_=o().dot(o().transpose(P),P),0==i?(w[6][6]=1e32,w[7][7]=1e32):(w[6][6]=1,w[7][7]=1),_=o().add(_,w),b=o().dot(o().transpose(P),m);let O=o().solve(_,b),R=o().dot(P,O),k=o().dot(R,m),W=o().sub(R,m);v=C,C=.5*o().dot(W,W);let U=this._Linesearch(c,O,m,k,this.alphaMin,this.mue,M,d,e,r);if(0==U)return 0;var I=U.alphaLength;let T=U.xNew,z=U.rNew;N=U.NCC;var S=U.searchUpdate;g=c,c=T,m=z,o().norm2(R),o().norm2(m);let B=Math.sqrt(C/(Math.pow(r,2)-8)),Q=o().inv(_);for(var x=[],y=0;y<8;++y)x.push(Math.sqrt(B*Q[y][y]));let X=[],Y=[];for(y=0;y<8;++y){X.push([]);let t=Q[y][y];for(var D=0;D<8;++D){let e=Q[D][D];X[y].push(Q[y][D]/Math.sqrt(t*e))}}let $=7;for(y=0;y<7;++y){for(D=1;D<$;++D)X[y][D]>.99&&y!=D?X[y][D]>X[D][y]?Y.push(y,D,1e20,X[y][D]):Y.push(D,y,1e20,X[D][y]):X[y][D]>.9&&y!=D?X[y][D]>X[D][y]?Y.push(y,D,10/X[y][D],X[y][D]):Y.push(D,y,10/X[D][y],X[D][y]):X[y][D]>.7&&y!=D?X[y][D]>X[D][y]?Y.push(y,D,5/X[y][D],X[y][D]):Y.push(D,y,5/X[D][y],X[D][y]):X[y][D]>.5&&y!=D?X[y][D]>X[D][y]?Y.push(y,D,2/X[y][D],X[y][D]):Y.push(D,y,2/X[D][y],X[D][y]):X[y][D]>.3&&y!=D&&(X[y][D]>X[D][y]?Y.push(y,D,1/X[y][D],X[y][D]):Y.push(D,y,1/X[D][y],X[D][y]));--$}if(s++,(s>=50||I<this.alphaMin)&&(h=2),s>0&&v/C<this.omegaIterationStop&&v/C>1/this.omegaIterationStop)if(1==this.autoradio){if(0==i&&(n=s),i=1,v/C<this.omegaIterationStop&&v/C>1/this.omegaIterationStop&&s>n){let t=[];for(y=0;y<8;++y){let e=o().sub(c,p);t.push(Math.abs(e[y]/x[y]))}var A=o().getBlock(x,[0,0],[5,0]),j=o().getBlock(x,[6,0],[7,0]),L=o().norm2(A),q=o().norm2(j);h=L>this.minAffParsNorm||q>this.minRadParsNorm?2:1}}else v/C<this.omegaIterationStop&&v/C>1/this.omegaIterationStop&&(h=1)}if(0==h||2==h)return 0;if(1==h){let t={};return t.alphaLength=I,t.x=c,t.r=m,t.NCC=N,t.searchUpdate=S,t.ParsStdDev=x,t.AffStdDev=A,t.RadStdDev=j,t.NormAffStdDev=L,t.NormRadStdDev=q,t}},this._Linesearch=function(t,e,r,a,h,s,i,n,l,f){let u=.5*o().dot(r,r),p=1;for(;Math.abs(p)>=this.alphaMin;){let r=o().add(t,o().dot(p,e)),h=this._generatePatch(l,r,f);var d=this._Wallisfilter(h);if(0==d)return 0;let s=o().sub(i,d);var M=this._NormCrossCor(i,d);if(.5*o().dot(s,s)<.1+u+this.mue*p*a)return(c={}).alphaLength=p,c.Change=o().dot(p,e),c.xNew=r,c.rNew=s,c.NCC=M,c.searchUpdate=d,c;p/=2}var c;return(c={alphaLength:0}).xNew=o().add(t,e),c.rNew=r,c.NCC=M,c.searchUpdate=d,c},this._NormCrossCor=function(t,e){let r=t.length,a=(Math.sqrt(r),0),o=0,h=0,s=0;for(var i=0;i<r;++i)a+=t[i],o+=e[i];for(a/=r,o/=r,i=0;i<r;++i)h+=Math.pow(t[i]-a,2),s+=Math.pow(e[i]-o,2);h=Math.sqrt(h/r),s=Math.sqrt(s/r);let n=0;for(i=0;i<r;++i)n+=(t[i]-a)*(e[i]-o)/(h*s);return n*=1/r,n}}runLsm(t,e){let r=(this._IntegralImage(t),this._IntegralImage(e),[Math.floor(t.length/2),Math.floor(t[0].length/2)]),a=[1,0,0,1,r[1],r[0],1,0],o=this._generatePatch(t,a,15),h=this._Wallisfilter(o),s=[],i=[];for(var n=this.offsetConstant;n<e[0].length-(15+this.offsetConstant);++n){i=[Math.floor(e.length/2),n+Math.floor(7.5)],a=[1,0,0,1,i[1],i[0],1,0];let t=this._generatePatch(e,a,15),r=this._Wallisfilter(t);s.push(this._NormCrossCor(h,r))}let l=[],f=0,u=0,p=-1,d=this.offsetConstant+Math.floor(7.5);for(n=0;n<s.length;++n)s[n]>this.NCCCutoff&&s[n]>f?(f=s[n],p=n+d,u=this.minimumPixelDistance):u>0&&(--u,0==u&&(l.push(i[0],p),p=-1,f=0));let M=[];for(n=0;n<l.length;n+=2){a=[l[n],l[n+1]];let r=this._Adjustment(t,e,15,a);if(0!=r){var c={};c.alphaLength=r.alphaLength,c.x=r.x,c.r=r.r,c.NCC=r.NCC,c.searchUpdate=r.searchUpdate,c.ParsStdDev=r.ParsStdDev,c.NormAffStdDev=r.NormAffStdDev,c.NormRadStdDev=r.NormRadStdDev,M.push(c)}}let g=this.NCCCutoff,m=-1,v=this.minAffParsNorm,C=this.minRadParsNorm,N=e[0].length/2,P=1/0;for(n=0;n<M.length;++n)if(this.searchWindowPosQuality>.7){var _=Math.abs(N-M[n].x[4]);_<P&&(m=n,P=_)}else M[n].NCC>g&&M[n].alphaLength>this.alphaCutoff&&M[n].NormAffStdDev<v&&M[n].NormRadStdDev<C&&(m=n,g=M[n].NCC,v=M[n].NormAffStdDev,C=M[n].NormRadStdDev,P=_);return m>-1?[M[m].x[4],M[m].x[5]]:(M.push(c),null)}_Wallisfilter(t){let e=[],r=0,a=0;for(var o=0;o<t.length;++o)r+=t[o];for(r/=t.length,o=0;o<t.length;++o)a+=Math.pow(t[o]-r,2);a=Math.sqrt(a/t.length);let h=81/(.9*a+90*(1-.9)),s=127.5+(0-h)*r;for(let r=0;r<t.length;++r){let a=t[r]*h+s;e[r]=a>255?255:a<0?0:a}return e}_IntegralImage(t){let e=[],r=[];for(let a=0;a<t.length;++a){e.push([]),r.push([]);for(let o=0;o<t[0].length;++o){let h=0,s=0,i=0;o>0&&(h=e[a][o-1]),a>0&&(s=e[a-1][o]),o>0&&a>0&&(i=e[a-1][o-1]);let n=t[a][o]+h+s-i;e[a].push(n),r[a].push(Math.pow(n,2))}}let a={};return a.Integral=e,a.IntegralSq=r,a}_generatePatch(t,e,r){let a=[],h=[[e[0],e[1]],[e[2],e[3]]],s=[[e[4]],[e[5]]],i=[e[6],e[7]],n=0;for(let e=-Math.floor(r/2);e<=Math.floor(r/2)&&1!=n;++e)for(let l=-Math.floor(r/2);l<=Math.floor(r/2);++l){let r=[[l],[e]],f=o().add(o().dot(h,r),s);if(f[1]<this.offsetConstant||f[1]>t.length-this.offsetConstant||f[0]<this.offsetConstant||f[0]>t[0].length-this.offsetConstant){n=1;break}let u=this._interpolate2D(t,f,i,"lanczos2");a.push(u)}return 0==n?a:0}}h.onmessage=t=>{if(t.data.topic&&"run"===t.data.topic){var e=new s;t.data.searchwindowposquality&&(e.searchWindowPosQuality=t.data.searchwindowposquality),t.data.NCC_Threshold&&(e.NCCCutoff=t.data.NCC_Threshold),t.data.adjustRadiometry&&(e.autoradio=1);var r=e.runLsm(t.data.template,t.data.searchwindow);h.postMessage(r)}}}},a={};function o(t){var e=a[t];if(void 0!==e)return e.exports;var h=a[t]={exports:{}};return r[t](h,h.exports,o),h.exports}return o.m=r,o.x=()=>{var t=o.O(void 0,[505],(()=>o(7012)));return o.O(t)},t=[],o.O=(e,r,a,h)=>{if(!r){var s=1/0;for(f=0;f<t.length;f++){r=t[f][0],a=t[f][1],h=t[f][2];for(var i=!0,n=0;n<r.length;n++)(!1&h||s>=h)&&Object.keys(o.O).every((t=>o.O[t](r[n])))?r.splice(n--,1):(i=!1,h<s&&(s=h));if(i){t.splice(f--,1);var l=a();void 0!==l&&(e=l)}}return e}h=h||0;for(var f=t.length;f>0&&t[f-1][2]>h;f--)t[f]=t[f-1];t[f]=[r,a,h]},o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var r in e)o.o(e,r)&&!o.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},o.f={},o.e=t=>Promise.all(Object.keys(o.f).reduce(((e,r)=>(o.f[r](t,e),e)),[])),o.u=t=>t+".infra3dapi.js",o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{var t;o.g.importScripts&&(t=o.g.location+"");var e=o.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var a=r.length-1;a>-1&&(!t||!/^http(s?):/.test(t));)t=r[a--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=t})(),(()=>{var t={12:1};o.f.i=(e,r)=>{t[e]||importScripts(o.p+o.u(e))};var e=self.webpackChunkinfra3dapi=self.webpackChunkinfra3dapi||[],r=e.push.bind(e);e.push=e=>{var a=e[0],h=e[1],s=e[2];for(var i in h)o.o(h,i)&&(o.m[i]=h[i]);for(s&&s(o);a.length;)t[a.pop()]=1;r(e)}})(),e=o.x,o.x=()=>o.e(505).then(e),o.x()})()));
1
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("infra3dapi",[],e):"object"==typeof exports?exports.infra3dapi=e():t.infra3dapi=e()}(self,(()=>(()=>{"use strict";var t,e,r={7012:(t,e,r)=>{var a=r(17505),o=r.n(a);const h=self;class s{constructor(){this.offsetConstant=6,this.minimumPixelDistance=5,this.NCCCutoff=.75,this.alphaCutoff=1e-6,this.minAffParsNorm=.15,this.minRadParsNorm=1.5,this.omegaIterationStop=1.01,this.mue=.1,this.alphaMin=1e-9,this.autoradio=1,this.searchWindowPosQuality=0,this.onprogress=null,this._createFilterMatrix=function(){let t=[],e=[];t.push([-3,0,3],[-10,0,10],[-3,0,3]),e.push([-3,-10,-3],[0,0,0],[3,10,3]);let r={};return r.filterX=t,r.filterY=e,r},this._obtainGradient=function(t,e){let r=[],a=[];for(let o=0;o<t.length;++o){let h=Math.floor(o/e),s=Math.floor(o%e);if(0!=s&&s!=e-1&&0!=h&&h!=e-1){let h=(t[o+1]-t[o-1])/2;r.push(h);let s=(t[o+e]-t[o-e])/2;a.push(s)}}let o={};return o.gradientX=r,o.gradientY=a,o},this._interpolate2D=function(t,e,r,a){if("bilinear"==a){let a=t[Math.floor(e[1])][Math.floor(e[0])],o=t[Math.floor(e[1])][Math.floor(e[0])+1],h=t[Math.floor(e[1])+1][Math.floor(e[0])],s=t[Math.floor(e[1])+1][Math.floor(e[0])+1];return a=r[0]*a+r[1],o=r[0]*o+r[1],h=r[0]*h+r[1],s=r[0]*s+r[1],(e[0]-Math.floor(e[0]))*(e[1]-Math.floor(e[1]))*s+(1-e[0]+Math.floor(e[0]))*(e[1]-Math.floor(e[1]))*h+(e[0]-Math.floor(e[0]))*(1-e[1]+Math.floor(e[1]))*o+(1-e[0]+Math.floor(e[0]))*(1-e[1]+Math.floor(e[1]))*a}if("lanczos2"==a){(p=[]).push(Math.floor(e[0])-1),p.push(p[0]+1),p.push(p[0]+2),p.push(p[0]+3),(d=[]).push(Math.floor(e[1])-1),d.push(d[0]+1),d.push(d[0]+2),d.push(d[0]+3);for(var o=[],h=0;h<4;++h)if((M=Math.abs(e[0]-p[h]))>=2)o.push(0);else if(0==M)o.push(1);else{if(!(M<2&&M>=0))return 0;var s=Math.sin(Math.PI*M)/(Math.PI*M)*Math.sin(Math.PI*M/2)/(Math.PI*M/2);o.push(s)}for(var i=[],n=0;n<4;++n){var l=0;for(h=0;h<4;++h)l+=o[h]*(r[0]*t[d[n]][p[h]]+r[1]);i.push(l)}var f=[];for(h=0;h<4;++h)if((M=Math.abs(e[1]-d[h]))>=2)f.push(0);else if(0==M)f.push(1);else{if(!(M<2&&M>=0))return 0;s=Math.sin(Math.PI*M)/(Math.PI*M)*Math.sin(Math.PI*M/2)/(Math.PI*M/2),f.push(s)}var u=0;for(n=0;n<4;++n)u+=f[n]*i[n];return u}if("lanczos3"==a){var p,d;for((p=[]).push(Math.floor(e[0])-2),p.push(p[0]+1),p.push(p[0]+2),p.push(p[0]+3),p.push(p[0]+4),p.push(p[0]+5),(d=[]).push(Math.floor(e[1])-2),d.push(d[0]+1),d.push(d[0]+2),d.push(d[0]+3),d.push(d[0]+4),d.push(d[0]+5),o=[],h=0;h<6;++h)if((M=Math.abs(e[0]-p[h]))>=2)o.push(0);else if(0==M)o.push(1);else{if(!(M<2&&M>=0))return 0;s=Math.sin(Math.PI*M)/(Math.PI*M)*Math.sin(Math.PI*M/3)/(Math.PI*M/3),o.push(s)}for(i=[],n=0;n<6;++n){for(l=0,h=0;h<6;++h)l+=o[h]*(r[0]*t[d[n]][p[h]]+r[1]);i.push(l)}for(f=[],h=0;h<6;++h){var M;if((M=Math.abs(e[1]-d[h]))>=2)f.push(0);else if(0==M)f.push(1);else{if(!(M<2&&M>=0))return 0;s=Math.sin(Math.PI*M)/(Math.PI*M)*Math.sin(Math.PI*M/3)/(Math.PI*M/3),f.push(s)}}for(u=0,n=0;n<6;++n)u+=f[n]*i[n];return u}},this._fillAMatrix=function(t,e,r,a,o){let h=[],s=0;for(let o=-Math.floor(a/2);o<=Math.floor(a/2);++o)for(let i=-Math.floor(a/2);i<=Math.floor(a/2);++i){let a=[i,0],n=[o,0],l=[0,i],f=[0,o],u=[1,0],p=[0,1],d=e[s]*a[0]+r[s]*a[1],M=e[s]*n[0]+r[s]*n[1],g=e[s]*l[0]+r[s]*l[1],c=e[s]*f[0]+r[s]*f[1],m=e[s]*u[0]+r[s]*u[1],v=e[s]*p[0]+r[s]*p[1];h.push([]);let C=t[s],N=1;h[s].push(d,M,g,c,m,v,C,N),s++}return h},this._Adjustment=function(t,e,r,a){let h=0,s=0,i=0,n=0,l=[Math.floor(t.length/2),Math.floor(t[0].length/2)],f=[a[0],a[1]],u=[1,0,0,1,l[1],l[0],1,0],p=[1,0,0,1,f[1],f[0],1,0],d=this._generatePatch(t,u,r),M=this._Wallisfilter(d);if(0==M)return 0;let g=p,c=g,m=1e10,v=0,C=0,N=0,P=[],_=[],I=[],b=o().diag([1,1,1,1,1,1,1,1]);for(;0==h;){this.onprogress&&this.onprogress();let t=this._generatePatch(e,g,r+2);if(0==t)return 0;let a=this._obtainGradient(t,r+2),l=a.gradientX,f=a.gradientY,u=this._generatePatch(e,g,r),d=this._Wallisfilter(u);if(0==d)return 0;0==s&&0==s&&(m=o().sub(M,d),N=this._NormCrossCor(M,d)),P=this._fillAMatrix(d,l,f,r,i),_=o().dot(o().transpose(P),P),0==i?(b[6][6]=1e32,b[7][7]=1e32):(b[6][6]=1,b[7][7]=1),_=o().add(_,b),I=o().dot(o().transpose(P),m);let O=o().solve(_,I),R=o().dot(P,O),k=o().dot(R,m),W=o().sub(R,m);v=C,C=.5*o().dot(W,W);let U=this._Linesearch(g,O,m,k,this.alphaMin,this.mue,M,d,e,r);if(0==U)return 0;var w=U.alphaLength;let T=U.xNew,z=U.rNew;N=U.NCC;var x=U.searchUpdate;c=g,g=T,m=z,o().norm2(R),o().norm2(m);let Q=Math.sqrt(C/(Math.pow(r,2)-8)),X=o().inv(_);for(var S=[],y=0;y<8;++y)S.push(Math.sqrt(Q*X[y][y]));let Y=[],B=[];for(y=0;y<8;++y){Y.push([]);let t=X[y][y];for(var D=0;D<8;++D){let e=X[D][D];Y[y].push(X[y][D]/Math.sqrt(t*e))}}let F=7;for(y=0;y<7;++y){for(D=1;D<F;++D)Y[y][D]>.99&&y!=D?Y[y][D]>Y[D][y]?B.push(y,D,1e20,Y[y][D]):B.push(D,y,1e20,Y[D][y]):Y[y][D]>.9&&y!=D?Y[y][D]>Y[D][y]?B.push(y,D,10/Y[y][D],Y[y][D]):B.push(D,y,10/Y[D][y],Y[D][y]):Y[y][D]>.7&&y!=D?Y[y][D]>Y[D][y]?B.push(y,D,5/Y[y][D],Y[y][D]):B.push(D,y,5/Y[D][y],Y[D][y]):Y[y][D]>.5&&y!=D?Y[y][D]>Y[D][y]?B.push(y,D,2/Y[y][D],Y[y][D]):B.push(D,y,2/Y[D][y],Y[D][y]):Y[y][D]>.3&&y!=D&&(Y[y][D]>Y[D][y]?B.push(y,D,1/Y[y][D],Y[y][D]):B.push(D,y,1/Y[D][y],Y[D][y]));--F}if(s++,(s>=50||w<this.alphaMin)&&(h=2),s>0&&v/C<this.omegaIterationStop&&v/C>1/this.omegaIterationStop)if(1==this.autoradio){if(0==i&&(n=s),i=1,v/C<this.omegaIterationStop&&v/C>1/this.omegaIterationStop&&s>n){let t=[];for(y=0;y<8;++y){let e=o().sub(g,p);t.push(Math.abs(e[y]/S[y]))}var j=o().getBlock(S,[0,0],[5,0]),A=o().getBlock(S,[6,0],[7,0]),L=o().norm2(j),q=o().norm2(A);h=L>this.minAffParsNorm||q>this.minRadParsNorm?2:1}}else v/C<this.omegaIterationStop&&v/C>1/this.omegaIterationStop&&(h=1)}if(0==h||2==h)return 0;if(1==h){let t={};return t.alphaLength=w,t.x=g,t.r=m,t.NCC=N,t.searchUpdate=x,t.ParsStdDev=S,t.AffStdDev=j,t.RadStdDev=A,t.NormAffStdDev=L,t.NormRadStdDev=q,t}},this._Linesearch=function(t,e,r,a,h,s,i,n,l,f){let u=.5*o().dot(r,r),p=1;for(;Math.abs(p)>=this.alphaMin;){let r=o().add(t,o().dot(p,e)),h=this._generatePatch(l,r,f);var d=this._Wallisfilter(h);if(0==d)return 0;let s=o().sub(i,d);var M=this._NormCrossCor(i,d);if(.5*o().dot(s,s)<.1+u+this.mue*p*a)return(g={}).alphaLength=p,g.Change=o().dot(p,e),g.xNew=r,g.rNew=s,g.NCC=M,g.searchUpdate=d,g;p/=2}var g;return(g={alphaLength:0}).xNew=o().add(t,e),g.rNew=r,g.NCC=M,g.searchUpdate=d,g},this._NormCrossCor=function(t,e){let r=t.length,a=(Math.sqrt(r),0),o=0,h=0,s=0;for(var i=0;i<r;++i)a+=t[i],o+=e[i];for(a/=r,o/=r,i=0;i<r;++i)h+=Math.pow(t[i]-a,2),s+=Math.pow(e[i]-o,2);h=Math.sqrt(h/r),s=Math.sqrt(s/r);let n=0;for(i=0;i<r;++i)n+=(t[i]-a)*(e[i]-o)/(h*s);return n*=1/r,n}}runLsm(t,e){let r=(this._IntegralImage(t),this._IntegralImage(e),[Math.floor(t.length/2),Math.floor(t[0].length/2)]),a=[1,0,0,1,r[1],r[0],1,0],o=this._generatePatch(t,a,15),h=this._Wallisfilter(o),s=[],i=[];for(var n=this.offsetConstant;n<e[0].length-(15+this.offsetConstant);++n){i=[Math.floor(e.length/2),n+Math.floor(7.5)],a=[1,0,0,1,i[1],i[0],1,0];let t=this._generatePatch(e,a,15),r=this._Wallisfilter(t);s.push(this._NormCrossCor(h,r))}let l=[],f=0,u=0,p=-1,d=this.offsetConstant+Math.floor(7.5);for(n=0;n<s.length;++n)s[n]>this.NCCCutoff&&s[n]>f?(f=s[n],p=n+d,u=this.minimumPixelDistance):u>0&&(--u,0==u&&(l.push(i[0],p),p=-1,f=0));let M=[];for(n=0;n<l.length;n+=2){a=[l[n],l[n+1]];let r=this._Adjustment(t,e,15,a);if(0!=r){var g={};g.alphaLength=r.alphaLength,g.x=r.x,g.r=r.r,g.NCC=r.NCC,g.searchUpdate=r.searchUpdate,g.ParsStdDev=r.ParsStdDev,g.NormAffStdDev=r.NormAffStdDev,g.NormRadStdDev=r.NormRadStdDev,M.push(g)}}let c=this.NCCCutoff,m=-1,v=this.minAffParsNorm,C=this.minRadParsNorm,N=e[0].length/2,P=1/0;for(n=0;n<M.length;++n)if(this.searchWindowPosQuality>.7){var _=Math.abs(N-M[n].x[4]);_<P&&(m=n,P=_)}else M[n].NCC>c&&M[n].alphaLength>this.alphaCutoff&&M[n].NormAffStdDev<v&&M[n].NormRadStdDev<C&&(m=n,c=M[n].NCC,v=M[n].NormAffStdDev,C=M[n].NormRadStdDev,P=_);return m>-1?[M[m].x[4],M[m].x[5]]:(M.push(g),null)}_Wallisfilter(t){let e=[],r=0,a=0;for(var o=0;o<t.length;++o)r+=t[o];for(r/=t.length,o=0;o<t.length;++o)a+=Math.pow(t[o]-r,2);a=Math.sqrt(a/t.length);let h=81/(.9*a+90*(1-.9)),s=127.5+(0-h)*r;for(let r=0;r<t.length;++r){let a=t[r]*h+s;e[r]=a>255?255:a<0?0:a}return e}_IntegralImage(t){let e=[],r=[];for(let a=0;a<t.length;++a){e.push([]),r.push([]);for(let o=0;o<t[0].length;++o){let h=0,s=0,i=0;o>0&&(h=e[a][o-1]),a>0&&(s=e[a-1][o]),o>0&&a>0&&(i=e[a-1][o-1]);let n=t[a][o]+h+s-i;e[a].push(n),r[a].push(Math.pow(n,2))}}let a={};return a.Integral=e,a.IntegralSq=r,a}_generatePatch(t,e,r){let a=[],h=[[e[0],e[1]],[e[2],e[3]]],s=[[e[4]],[e[5]]],i=[e[6],e[7]],n=0;for(let e=-Math.floor(r/2);e<=Math.floor(r/2)&&1!=n;++e)for(let l=-Math.floor(r/2);l<=Math.floor(r/2);++l){let r=[[l],[e]],f=o().add(o().dot(h,r),s);if(f[1]<this.offsetConstant||f[1]>t.length-this.offsetConstant||f[0]<this.offsetConstant||f[0]>t[0].length-this.offsetConstant){n=1;break}let u=this._interpolate2D(t,f,i,"lanczos2");a.push(u)}return 0==n?a:0}}h.onmessage=t=>{if(t.data.topic&&"run"===t.data.topic){var e=new s;t.data.searchwindowposquality&&(e.searchWindowPosQuality=t.data.searchwindowposquality),t.data.NCC_Threshold&&(e.NCCCutoff=t.data.NCC_Threshold),t.data.adjustRadiometry&&(e.autoradio=1);var r=e.runLsm(t.data.template,t.data.searchwindow);h.postMessage(r)}}}},a={};function o(t){var e=a[t];if(void 0!==e)return e.exports;var h=a[t]={exports:{}};return r[t](h,h.exports,o),h.exports}return o.m=r,o.x=()=>{var t=o.O(void 0,[505],(()=>o(7012)));return o.O(t)},t=[],o.O=(e,r,a,h)=>{if(!r){var s=1/0;for(f=0;f<t.length;f++){r=t[f][0],a=t[f][1],h=t[f][2];for(var i=!0,n=0;n<r.length;n++)(!1&h||s>=h)&&Object.keys(o.O).every((t=>o.O[t](r[n])))?r.splice(n--,1):(i=!1,h<s&&(s=h));if(i){t.splice(f--,1);var l=a();void 0!==l&&(e=l)}}return e}h=h||0;for(var f=t.length;f>0&&t[f-1][2]>h;f--)t[f]=t[f-1];t[f]=[r,a,h]},o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var r in e)o.o(e,r)&&!o.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},o.f={},o.e=t=>Promise.all(Object.keys(o.f).reduce(((e,r)=>(o.f[r](t,e),e)),[])),o.u=t=>t+".infra3dapi.js",o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.p="",(()=>{var t={12:1};o.f.i=(e,r)=>{t[e]||importScripts(o.p+o.u(e))};var e=self.webpackChunkinfra3dapi=self.webpackChunkinfra3dapi||[],r=e.push.bind(e);e.push=e=>{var a=e[0],h=e[1],s=e[2];for(var i in h)o.o(h,i)&&(o.m[i]=h[i]);for(s&&s(o);a.length;)t[a.pop()]=1;r(e)}})(),e=o.x,o.x=()=>o.e(505).then(e),o.x()})()));
package/80.infra3dapi.js CHANGED
@@ -1 +1 @@
1
- !function(t,a){"object"==typeof exports&&"object"==typeof module?module.exports=a():"function"==typeof define&&define.amd?define("infra3dapi",[],a):"object"==typeof exports?exports.infra3dapi=a():t.infra3dapi=a()}(self,(()=>(()=>{"use strict";var t,a,s={35080:(t,a,s)=>{var o=s(17505),e=s.n(o);const i=self;class r{constructor(){this.data=[],this.approxval=null,this.thresh=1e-9,this.iterLimit=100,this.finalIterations=-1,this.convergence=!1,this.correction=[0,0,0],this.onprogress=null}calcApproxValue(){let t,a,s,o,i,r;const h=[],n=[];for(let p=0;p<this.data.length;p++){if(a=this.data[p],t=[a[0],a[1],a[2]],s=this.getRotMat(a[3]*Math.PI/180,a[4]*Math.PI/180,a[5]*Math.PI/180),o=[.001*a[6],.001*a[7],.001*-a[8]],i=e().add(t,e().dot(s,o)),1==a[10]){const o=.001*a[6]/(.001*-a[8]),r=.001*a[7]/(.001*-a[8]),h=Math.sqrt(o*o+r*r),n=o/h*Math.sin(h),p=r/h*Math.sin(h),c=Math.cos(h),d=e().mul(.001*-a[8],[n,p,c]);i=e().add(t,e().dot(s,d))}h.push(i),r=e().sub(i,t),n.push(r)}let p=0,c=[-1,-1];for(let t=0;t<n.length;t++)for(let a=0;a<n.length;a++){if(t==a)continue;const s=Math.acos(e().dot(n[t],n[a])/(e().norm2(n[t])*e().norm2(n[a])));s>p&&(c=[t,a],p=s)}const d=[this.data[c[0]][0],this.data[c[0]][1],this.data[c[0]][2]],l=[this.data[c[1]][0],this.data[c[1]][1],this.data[c[1]][2]],M=h[c[0]],u=h[c[1]],f=d[0],v=d[1],g=d[2],w=l[0],x=l[1],m=l[2];let b=e().norm2(e().sub(M,d));const y=(M[0]-d[0])/b,q=(M[1]-d[1])/b,P=(M[2]-d[2])/b;b=e().norm2(e().sub(u,l));const I=(u[0]-l[0])/b,O=(u[1]-l[1])/b,j=(u[2]-l[2])/b,k=e().det([[y,q],[I,O]]),L=e().det([[q,P],[O,j]]),_=e().det([[P,y],[j,I]]),E=e().det([[y,q,P],[I,O,j],[k,L,_]]),S=e().det([[f-w,v-x,g-m],[k,L,_],[I,O,j]])/E,z=e().det([[f-w,v-x,g-m],[k,L,_],[y,q,P]])/E,D=(f+S*y+(w+z*I))/2,A=(v+S*q+(x+z*O))/2,B=(g+S*P+(m+z*j))/2;return Math.acos(y*I+q*O+P*j),[D,A,B]}runBuendel(t){this.data=JSON.parse(t),null==this.approxval&&(this.approxval=this.calcApproxValue()),this.approxval=[this.approxval[0]-this.data[0][0],this.approxval[1]-this.data[0][1],this.approxval[2]-this.data[0][2]];let a=[0,0,0],s=[],o=[],i=[],r=this.approxval;for(var h=0;h<this.iterLimit;h++){s=[],o=[],i=[],r=e().add(r,[a[0],a[1],a[2]]);for(let t=0;t<this.data.length;t++){const a=[this.data[t][0]-this.data[0][0],this.data[t][1]-this.data[0][1],this.data[t][2]-this.data[0][2]],e=this.getRotMat(this.data[t][3]*Math.PI/180,this.data[t][4]*Math.PI/180,this.data[t][5]*Math.PI/180);let h,n;h=0==this.data[t][10]||2==this.data[t][10]||3==this.data[t][10]?this.coLinEquation(e,a,r,this.data[t][8]):this.coLinEquationPano(e,a,r,this.data[t][8]),i.push(this.data[t][6]-h[0]),i.push(this.data[t][7]-h[1]),n=0==this.data[t][10]||2==this.data[t][10]||3==this.data[t][10]?this.getDeriatives(e,a,r,this.data[t][8]):this.getDeriativesPano(e,a,r,this.data[t][8]),s.push([n[0],n[1],n[2]]),s.push([n[3],n[4],n[5]]),o.push(this.data[t][9]),o.push(this.data[t][9])}const t=e().diag(o),h=e().dot(e().transpose(s),t),p=e().dot(h,s);var n=e().inv(p);a=e().dot(e().dot(n,h),i);const c=e().norm2(a),d={topic:"correction_update",value:c};if(null!==this.onprogress&&this.onprogress(d),c<this.thresh)break}if(h>=this.iterLimit)return this.convergence=!1,null;const p=e().sub(e().dot(s,a),i),c=Math.sqrt(e().dot(p,p)/(2*this.data.length-a.length)),d=[c*Math.sqrt(n[0][0]),c*Math.sqrt(n[1][1]),c*Math.sqrt(n[2][2])];return this.convergence=!0,this.finalIterations=h,this.correction=r,this.m0=c,this.s_xyz=d,this.residuals=p,[r[0]+this.data[0][0],r[1]+this.data[0][1],r[2]+this.data[0][2]]}getRotMat(t,a,s){return[[Math.cos(a)*Math.cos(s),-Math.cos(a)*Math.sin(s),Math.sin(a)],[Math.cos(t)*Math.sin(s)+Math.sin(t)*Math.sin(a)*Math.cos(s),Math.cos(t)*Math.cos(s)-Math.sin(t)*Math.sin(a)*Math.sin(s),-Math.sin(t)*Math.cos(a)],[Math.sin(t)*Math.sin(s)-Math.cos(t)*Math.sin(a)*Math.cos(s),Math.sin(t)*Math.cos(s)+Math.cos(t)*Math.sin(a)*Math.sin(s),Math.cos(t)*Math.cos(a)]]}getDeriatives(t,a,s,o){const e=-o,i=t[0][0]*(s[0]-a[0])+t[1][0]*(s[1]-a[1])+t[2][0]*(s[2]-a[2]),r=t[0][1]*(s[0]-a[0])+t[1][1]*(s[1]-a[1])+t[2][1]*(s[2]-a[2]),h=t[0][2]*(s[0]-a[0])+t[1][2]*(s[1]-a[1])+t[2][2]*(s[2]-a[2]);return[-e/Math.pow(h,2)*(t[0][2]*i-t[0][0]*h),-e/Math.pow(h,2)*(t[1][2]*i-t[1][0]*h),-e/Math.pow(h,2)*(t[2][2]*i-t[2][0]*h),-e/Math.pow(h,2)*(t[0][2]*r-t[0][1]*h),-e/Math.pow(h,2)*(t[1][2]*r-t[1][1]*h),-e/Math.pow(h,2)*(t[2][2]*r-t[2][1]*h)]}getDeriativesPano(t,a,s,o){const e=t[0][0]*(s[0]-a[0])+t[1][0]*(s[1]-a[1])+t[2][0]*(s[2]-a[2]),i=t[0][1]*(s[0]-a[0])+t[1][1]*(s[1]-a[1])+t[2][1]*(s[2]-a[2]),r=t[0][2]*(s[0]-a[0])+t[1][2]*(s[1]-a[1])+t[2][2]*(s[2]-a[2]);Math.pow(r,2),t[0][2],t[0][0],Math.pow(r,2),t[1][2],t[1][0],Math.pow(r,2),t[2][2],t[2][0],Math.pow(r,2),t[0][2],t[0][1],Math.pow(r,2),t[1][2],t[1][1],Math.pow(r,2),t[2][2],t[2][1];let h=t[0][0],n=t[0][1],p=t[0][2],c=e,d=i,l=r,M=r*r,u=o,f=Math.pow(c,2)+Math.pow(d,2),v=Math.sqrt(f),g=Math.atan(Math.sqrt(f)/l),w=c*h+d*n;const x=-u*g*h/v-u*(-v*p/M+w/(v*l))*c/(v*(f/M+1))+u*g*w*c/Math.pow(f,1.5),m=-u*g*n/v-u*(-v*p/M+w/(v*l))*d/(v*(f/M+1))+u*g*w*d/Math.pow(f,1.5);h=t[1][0],n=t[1][1],p=t[1][2],c=e,d=i,l=r,M=r*r,u=o,f=Math.pow(c,2)+Math.pow(d,2),v=Math.sqrt(f),g=Math.atan(Math.sqrt(f)/l),w=c*h+d*n;const b=-u*g*h/v-u*(-v*p/M+w/(v*l))*c/(v*(f/M+1))+u*g*w*c/Math.pow(f,1.5),y=-u*g*n/v-u*(-v*p/M+w/(v*l))*d/(v*(f/M+1))+u*g*w*d/Math.pow(f,1.5);return h=t[2][0],n=t[2][1],p=t[2][2],c=e,d=i,l=r,M=r*r,u=o,f=Math.pow(c,2)+Math.pow(d,2),v=Math.sqrt(f),g=Math.atan(Math.sqrt(f)/l),w=c*h+d*n,[x,b,-u*g*h/v-u*(-v*p/M+w/(v*l))*c/(v*(f/M+1))+u*g*w*c/Math.pow(f,1.5),m,y,-u*g*n/v-u*(-v*p/M+w/(v*l))*d/(v*(f/M+1))+u*g*w*d/Math.pow(f,1.5)]}coLinEquation(t,a,s,o){const e=t[0][0]*(s[0]-a[0])+t[1][0]*(s[1]-a[1])+t[2][0]*(s[2]-a[2]),i=t[0][1]*(s[0]-a[0])+t[1][1]*(s[1]-a[1])+t[2][1]*(s[2]-a[2]),r=t[0][2]*(s[0]-a[0])+t[1][2]*(s[1]-a[1])+t[2][2]*(s[2]-a[2]);return[-o*e/r,-o*i/r]}coLinEquationPano(t,a,s,o){const e=t[0][0]*(s[0]-a[0])+t[1][0]*(s[1]-a[1])+t[2][0]*(s[2]-a[2]),i=t[0][1]*(s[0]-a[0])+t[1][1]*(s[1]-a[1])+t[2][1]*(s[2]-a[2]),r=t[0][2]*(s[0]-a[0])+t[1][2]*(s[1]-a[1])+t[2][2]*(s[2]-a[2]),h=Math.sqrt(e*e+i*i);return[-o*e/h*Math.atan(h/r),-o*i/h*Math.atan(h/r)]}}i.onmessage=t=>{if(t.data.topic&&"run"===t.data.topic){const a=new r;if(a.onprogress=t=>{i.postMessage(t)},t.data.approxval?a.approxval=t.data.approxval:a.approxval=null,t.data.observations){let s={};try{s={topic:"result",result:a.runBuendel(t.data.observations),convergence:a.convergence,finalIterations:a.finalIterations,correction:a.correction,m0:a.m0,s_xyz:a.s_xyz,residuals:a.residuals}}catch(t){console.log(t),s={topic:"result",result:[0,0,0],convergence:!1,finalIterations:-1,correction:[0,0,0],m0:1/0,s_xyz:[1/0,1/0,1/0],residuals:[]}}i.postMessage(s)}}}}},o={};function e(t){var a=o[t];if(void 0!==a)return a.exports;var i=o[t]={exports:{}};return s[t](i,i.exports,e),i.exports}return e.m=s,e.x=()=>{var t=e.O(void 0,[505],(()=>e(35080)));return e.O(t)},t=[],e.O=(a,s,o,i)=>{if(!s){var r=1/0;for(c=0;c<t.length;c++){s=t[c][0],o=t[c][1],i=t[c][2];for(var h=!0,n=0;n<s.length;n++)(!1&i||r>=i)&&Object.keys(e.O).every((t=>e.O[t](s[n])))?s.splice(n--,1):(h=!1,i<r&&(r=i));if(h){t.splice(c--,1);var p=o();void 0!==p&&(a=p)}}return a}i=i||0;for(var c=t.length;c>0&&t[c-1][2]>i;c--)t[c]=t[c-1];t[c]=[s,o,i]},e.n=t=>{var a=t&&t.__esModule?()=>t.default:()=>t;return e.d(a,{a}),a},e.d=(t,a)=>{for(var s in a)e.o(a,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:a[s]})},e.f={},e.e=t=>Promise.all(Object.keys(e.f).reduce(((a,s)=>(e.f[s](t,a),a)),[])),e.u=t=>t+".infra3dapi.js",e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),e.o=(t,a)=>Object.prototype.hasOwnProperty.call(t,a),(()=>{var t;e.g.importScripts&&(t=e.g.location+"");var a=e.g.document;if(!t&&a&&(a.currentScript&&(t=a.currentScript.src),!t)){var s=a.getElementsByTagName("script");if(s.length)for(var o=s.length-1;o>-1&&(!t||!/^http(s?):/.test(t));)t=s[o--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=t})(),(()=>{var t={80:1};e.f.i=(a,s)=>{t[a]||importScripts(e.p+e.u(a))};var a=self.webpackChunkinfra3dapi=self.webpackChunkinfra3dapi||[],s=a.push.bind(a);a.push=a=>{var o=a[0],i=a[1],r=a[2];for(var h in i)e.o(i,h)&&(e.m[h]=i[h]);for(r&&r(e);o.length;)t[o.pop()]=1;s(a)}})(),a=e.x,e.x=()=>e.e(505).then(a),e.x()})()));
1
+ !function(t,a){"object"==typeof exports&&"object"==typeof module?module.exports=a():"function"==typeof define&&define.amd?define("infra3dapi",[],a):"object"==typeof exports?exports.infra3dapi=a():t.infra3dapi=a()}(self,(()=>(()=>{"use strict";var t,a,s={35080:(t,a,s)=>{var o=s(17505),i=s.n(o);const e=self;class h{constructor(){this.data=[],this.approxval=null,this.thresh=1e-9,this.iterLimit=100,this.finalIterations=-1,this.convergence=!1,this.correction=[0,0,0],this.onprogress=null}calcApproxValue(){let t,a,s,o,e,h;const r=[],n=[];for(let p=0;p<this.data.length;p++){if(a=this.data[p],t=[a[0],a[1],a[2]],s=this.getRotMat(a[3]*Math.PI/180,a[4]*Math.PI/180,a[5]*Math.PI/180),o=[.001*a[6],.001*a[7],.001*-a[8]],e=i().add(t,i().dot(s,o)),1==a[10]){const o=.001*a[6]/(.001*-a[8]),h=.001*a[7]/(.001*-a[8]),r=Math.sqrt(o*o+h*h),n=o/r*Math.sin(r),p=h/r*Math.sin(r),c=Math.cos(r),d=i().mul(.001*-a[8],[n,p,c]);e=i().add(t,i().dot(s,d))}r.push(e),h=i().sub(e,t),n.push(h)}let p=0,c=[-1,-1];for(let t=0;t<n.length;t++)for(let a=0;a<n.length;a++){if(t==a)continue;const s=Math.acos(i().dot(n[t],n[a])/(i().norm2(n[t])*i().norm2(n[a])));s>p&&(c=[t,a],p=s)}const d=[this.data[c[0]][0],this.data[c[0]][1],this.data[c[0]][2]],l=[this.data[c[1]][0],this.data[c[1]][1],this.data[c[1]][2]],M=r[c[0]],u=r[c[1]],f=d[0],v=d[1],g=d[2],w=l[0],x=l[1],b=l[2];let m=i().norm2(i().sub(M,d));const y=(M[0]-d[0])/m,q=(M[1]-d[1])/m,P=(M[2]-d[2])/m;m=i().norm2(i().sub(u,l));const I=(u[0]-l[0])/m,O=(u[1]-l[1])/m,j=(u[2]-l[2])/m,k=i().det([[y,q],[I,O]]),L=i().det([[q,P],[O,j]]),_=i().det([[P,y],[j,I]]),z=i().det([[y,q,P],[I,O,j],[k,L,_]]),D=i().det([[f-w,v-x,g-b],[k,L,_],[I,O,j]])/z,E=i().det([[f-w,v-x,g-b],[k,L,_],[y,q,P]])/z,R=(f+D*y+(w+E*I))/2,A=(v+D*q+(x+E*O))/2,B=(g+D*P+(b+E*j))/2;return Math.acos(y*I+q*O+P*j),[R,A,B]}runBuendel(t){this.data=JSON.parse(t),null==this.approxval&&(this.approxval=this.calcApproxValue()),this.approxval=[this.approxval[0]-this.data[0][0],this.approxval[1]-this.data[0][1],this.approxval[2]-this.data[0][2]];let a=[0,0,0],s=[],o=[],e=[],h=this.approxval;for(var r=0;r<this.iterLimit;r++){s=[],o=[],e=[],h=i().add(h,[a[0],a[1],a[2]]);for(let t=0;t<this.data.length;t++){const a=[this.data[t][0]-this.data[0][0],this.data[t][1]-this.data[0][1],this.data[t][2]-this.data[0][2]],i=this.getRotMat(this.data[t][3]*Math.PI/180,this.data[t][4]*Math.PI/180,this.data[t][5]*Math.PI/180);let r,n;r=0==this.data[t][10]||2==this.data[t][10]||3==this.data[t][10]?this.coLinEquation(i,a,h,this.data[t][8]):this.coLinEquationPano(i,a,h,this.data[t][8]),e.push(this.data[t][6]-r[0]),e.push(this.data[t][7]-r[1]),n=0==this.data[t][10]||2==this.data[t][10]||3==this.data[t][10]?this.getDeriatives(i,a,h,this.data[t][8]):this.getDeriativesPano(i,a,h,this.data[t][8]),s.push([n[0],n[1],n[2]]),s.push([n[3],n[4],n[5]]),o.push(this.data[t][9]),o.push(this.data[t][9])}const t=i().diag(o),r=i().dot(i().transpose(s),t),p=i().dot(r,s);var n=i().inv(p);a=i().dot(i().dot(n,r),e);const c=i().norm2(a),d={topic:"correction_update",value:c};if(null!==this.onprogress&&this.onprogress(d),c<this.thresh)break}if(r>=this.iterLimit)return this.convergence=!1,null;const p=i().sub(i().dot(s,a),e),c=Math.sqrt(i().dot(p,p)/(2*this.data.length-a.length)),d=[c*Math.sqrt(n[0][0]),c*Math.sqrt(n[1][1]),c*Math.sqrt(n[2][2])];return this.convergence=!0,this.finalIterations=r,this.correction=h,this.m0=c,this.s_xyz=d,this.residuals=p,[h[0]+this.data[0][0],h[1]+this.data[0][1],h[2]+this.data[0][2]]}getRotMat(t,a,s){return[[Math.cos(a)*Math.cos(s),-Math.cos(a)*Math.sin(s),Math.sin(a)],[Math.cos(t)*Math.sin(s)+Math.sin(t)*Math.sin(a)*Math.cos(s),Math.cos(t)*Math.cos(s)-Math.sin(t)*Math.sin(a)*Math.sin(s),-Math.sin(t)*Math.cos(a)],[Math.sin(t)*Math.sin(s)-Math.cos(t)*Math.sin(a)*Math.cos(s),Math.sin(t)*Math.cos(s)+Math.cos(t)*Math.sin(a)*Math.sin(s),Math.cos(t)*Math.cos(a)]]}getDeriatives(t,a,s,o){const i=-o,e=t[0][0]*(s[0]-a[0])+t[1][0]*(s[1]-a[1])+t[2][0]*(s[2]-a[2]),h=t[0][1]*(s[0]-a[0])+t[1][1]*(s[1]-a[1])+t[2][1]*(s[2]-a[2]),r=t[0][2]*(s[0]-a[0])+t[1][2]*(s[1]-a[1])+t[2][2]*(s[2]-a[2]);return[-i/Math.pow(r,2)*(t[0][2]*e-t[0][0]*r),-i/Math.pow(r,2)*(t[1][2]*e-t[1][0]*r),-i/Math.pow(r,2)*(t[2][2]*e-t[2][0]*r),-i/Math.pow(r,2)*(t[0][2]*h-t[0][1]*r),-i/Math.pow(r,2)*(t[1][2]*h-t[1][1]*r),-i/Math.pow(r,2)*(t[2][2]*h-t[2][1]*r)]}getDeriativesPano(t,a,s,o){const i=t[0][0]*(s[0]-a[0])+t[1][0]*(s[1]-a[1])+t[2][0]*(s[2]-a[2]),e=t[0][1]*(s[0]-a[0])+t[1][1]*(s[1]-a[1])+t[2][1]*(s[2]-a[2]),h=t[0][2]*(s[0]-a[0])+t[1][2]*(s[1]-a[1])+t[2][2]*(s[2]-a[2]);Math.pow(h,2),t[0][2],t[0][0],Math.pow(h,2),t[1][2],t[1][0],Math.pow(h,2),t[2][2],t[2][0],Math.pow(h,2),t[0][2],t[0][1],Math.pow(h,2),t[1][2],t[1][1],Math.pow(h,2),t[2][2],t[2][1];let r=t[0][0],n=t[0][1],p=t[0][2],c=i,d=e,l=h,M=h*h,u=o,f=Math.pow(c,2)+Math.pow(d,2),v=Math.sqrt(f),g=Math.atan(Math.sqrt(f)/l),w=c*r+d*n;const x=-u*g*r/v-u*(-v*p/M+w/(v*l))*c/(v*(f/M+1))+u*g*w*c/Math.pow(f,1.5),b=-u*g*n/v-u*(-v*p/M+w/(v*l))*d/(v*(f/M+1))+u*g*w*d/Math.pow(f,1.5);r=t[1][0],n=t[1][1],p=t[1][2],c=i,d=e,l=h,M=h*h,u=o,f=Math.pow(c,2)+Math.pow(d,2),v=Math.sqrt(f),g=Math.atan(Math.sqrt(f)/l),w=c*r+d*n;const m=-u*g*r/v-u*(-v*p/M+w/(v*l))*c/(v*(f/M+1))+u*g*w*c/Math.pow(f,1.5),y=-u*g*n/v-u*(-v*p/M+w/(v*l))*d/(v*(f/M+1))+u*g*w*d/Math.pow(f,1.5);return r=t[2][0],n=t[2][1],p=t[2][2],c=i,d=e,l=h,M=h*h,u=o,f=Math.pow(c,2)+Math.pow(d,2),v=Math.sqrt(f),g=Math.atan(Math.sqrt(f)/l),w=c*r+d*n,[x,m,-u*g*r/v-u*(-v*p/M+w/(v*l))*c/(v*(f/M+1))+u*g*w*c/Math.pow(f,1.5),b,y,-u*g*n/v-u*(-v*p/M+w/(v*l))*d/(v*(f/M+1))+u*g*w*d/Math.pow(f,1.5)]}coLinEquation(t,a,s,o){const i=t[0][0]*(s[0]-a[0])+t[1][0]*(s[1]-a[1])+t[2][0]*(s[2]-a[2]),e=t[0][1]*(s[0]-a[0])+t[1][1]*(s[1]-a[1])+t[2][1]*(s[2]-a[2]),h=t[0][2]*(s[0]-a[0])+t[1][2]*(s[1]-a[1])+t[2][2]*(s[2]-a[2]);return[-o*i/h,-o*e/h]}coLinEquationPano(t,a,s,o){const i=t[0][0]*(s[0]-a[0])+t[1][0]*(s[1]-a[1])+t[2][0]*(s[2]-a[2]),e=t[0][1]*(s[0]-a[0])+t[1][1]*(s[1]-a[1])+t[2][1]*(s[2]-a[2]),h=t[0][2]*(s[0]-a[0])+t[1][2]*(s[1]-a[1])+t[2][2]*(s[2]-a[2]),r=Math.sqrt(i*i+e*e);return[-o*i/r*Math.atan(r/h),-o*e/r*Math.atan(r/h)]}}e.onmessage=t=>{if(t.data.topic&&"run"===t.data.topic){const a=new h;if(a.onprogress=t=>{e.postMessage(t)},t.data.approxval?a.approxval=t.data.approxval:a.approxval=null,t.data.observations){let s={};try{s={topic:"result",result:a.runBuendel(t.data.observations),convergence:a.convergence,finalIterations:a.finalIterations,correction:a.correction,m0:a.m0,s_xyz:a.s_xyz,residuals:a.residuals}}catch(t){console.log(t),s={topic:"result",result:[0,0,0],convergence:!1,finalIterations:-1,correction:[0,0,0],m0:1/0,s_xyz:[1/0,1/0,1/0],residuals:[]}}e.postMessage(s)}}}}},o={};function i(t){var a=o[t];if(void 0!==a)return a.exports;var e=o[t]={exports:{}};return s[t](e,e.exports,i),e.exports}return i.m=s,i.x=()=>{var t=i.O(void 0,[505],(()=>i(35080)));return i.O(t)},t=[],i.O=(a,s,o,e)=>{if(!s){var h=1/0;for(c=0;c<t.length;c++){s=t[c][0],o=t[c][1],e=t[c][2];for(var r=!0,n=0;n<s.length;n++)(!1&e||h>=e)&&Object.keys(i.O).every((t=>i.O[t](s[n])))?s.splice(n--,1):(r=!1,e<h&&(h=e));if(r){t.splice(c--,1);var p=o();void 0!==p&&(a=p)}}return a}e=e||0;for(var c=t.length;c>0&&t[c-1][2]>e;c--)t[c]=t[c-1];t[c]=[s,o,e]},i.n=t=>{var a=t&&t.__esModule?()=>t.default:()=>t;return i.d(a,{a}),a},i.d=(t,a)=>{for(var s in a)i.o(a,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:a[s]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce(((a,s)=>(i.f[s](t,a),a)),[])),i.u=t=>t+".infra3dapi.js",i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,a)=>Object.prototype.hasOwnProperty.call(t,a),i.p="",(()=>{var t={80:1};i.f.i=(a,s)=>{t[a]||importScripts(i.p+i.u(a))};var a=self.webpackChunkinfra3dapi=self.webpackChunkinfra3dapi||[],s=a.push.bind(a);a.push=a=>{var o=a[0],e=a[1],h=a[2];for(var r in e)i.o(e,r)&&(i.m[r]=e[r]);for(h&&h(i);o.length;)t[o.pop()]=1;s(a)}})(),a=i.x,i.x=()=>i.e(505).then(a),i.x()})()));
package/README.md CHANGED
@@ -1,124 +1,133 @@
1
- # Installation
2
-
3
- ### NPM Package
4
-
5
- The API can be installed as a package using npm. To install it from the npm package repository, simply type:
6
-
7
- ```bash
8
- npm install @inovitas/infra3dapi
9
- ```
10
-
11
- ### CDN Download
12
-
13
- Alternatively, you can obtain the API from a CDN. To get the latest version, add the following script to your HTML file:
14
-
15
- ```html
16
- <script src="https://cdn.jsdelivr.net/npm/@inovitas/infra3dapi@latest/infra3dapi.js"></script>
17
- ```
18
-
19
- We recommend using a specific version in your project. To get a specific version, use the following script and adjust the version accordingly:
20
-
21
- ```html
22
- <script src="https://cdn.jsdelivr.net/npm/@inovitas/infra3dapi@1.0.1/infra3dapi.js"></script>
23
- ```
24
-
25
- **Note**: Please do not name the `<div>` in which the viewer is initialized as "infra3d" as this may cause internal conflicts.
26
-
27
- # Core Concept
28
-
29
- To use the API, you can call the init functions in infra3dapi. After loggin in and initializing the view (with [`manager.initView()`](classes/_inovitas_infra3dapi.manager.Manager.html#initView)), you will get a viewer object. This viewer object can then be used to add event-listeners to different events emitted by the viewer (like [`viewer.geoframechanged`](classes/_inovitas_infra3dsdk.Viewer.html#geoframechanged)) or to call some functions (like [`viewer.getRoutes()`](classes/_inovitas_infra3dsdk.Viewer.html#getRoutes) or [`viewer.movePosition()`](classes/_inovitas_infra3dsdk.Viewer.html#movePosition)).
30
-
31
- # Authentication
32
-
33
- 1. Register your OAuth 2.0 application with our sales team to obtain credentials (client_id and client_secret).
34
- 2. Develop a server-side component to securely use these credentials, obtaining an access token from infra3D.
35
- 3. Your server-side component fetches the access token using client credentials, which can then be shared with your client app.
36
- 4. Your client app uses this token to authenticate with infra3D for requested services, refreshing it via the server component when expired. Remember to treat the client_secret like a password, avoiding exposure in client-side environments for enhanced security.
37
-
1
+ # Installation
2
+
3
+ ### NPM Package
4
+
5
+ The API can be installed as a package using npm. To install it from the npm package repository, simply type:
6
+
7
+ ```bash
8
+ npm install @inovitas/infra3dapi
9
+ ```
10
+
11
+ ### CDN Download
12
+
13
+ Alternatively, you can obtain the API from a CDN. To get the latest version, add the following script to your HTML file:
14
+
15
+ ```html
16
+ <script src="https://cdn.jsdelivr.net/npm/@inovitas/infra3dapi@latest/infra3dapi.js"></script>
17
+ ```
18
+
19
+ We recommend using a specific version in your project. To get a specific version, use the following script and adjust the version accordingly:
20
+
21
+ ```html
22
+ <script src="https://cdn.jsdelivr.net/npm/@inovitas/infra3dapi@1.0.1/infra3dapi.js"></script>
23
+ ```
24
+
25
+ **Note**: Please do not name the `<div>` in which the viewer is initialized as "infra3d" as this may cause internal conflicts.
26
+
27
+ # Core Concept
28
+
29
+ To use the API, you can call the init functions in infra3dapi. After loggin in and initializing the view (with [`manager.initView()`](classes/_inovitas_infra3dapi.manager.Manager.html#initView)), you will get a viewer object. This viewer object can then be used to add event-listeners to different events emitted by the viewer (like [`viewer.geoframechanged`](classes/_inovitas_infra3dsdk.Viewer.html#geoframechanged)) or to call some functions (like [`viewer.getRoutes()`](classes/_inovitas_infra3dsdk.Viewer.html#getRoutes) or [`viewer.movePosition()`](classes/_inovitas_infra3dsdk.Viewer.html#movePosition)).
30
+
31
+ # Authentication
32
+
33
+ 1. Register your OAuth 2.0 application with our sales team to obtain credentials (client_id and client_secret).
34
+ 2. Develop a server-side component to securely use these credentials, obtaining an access token from infra3D.
35
+ 3. Your server-side component fetches the access token using client credentials, which can then be shared with your client app.
36
+ 4. Your client app uses this token to authenticate with infra3D for requested services, refreshing it via the server component when expired. Remember to treat the client_secret like a password, avoiding exposure in client-side environments for enhanced security.
37
+
38
38
  # Changelog
39
39
 
40
- ## 1.0.2 - 06.08.2024
41
-
42
- ### Bugfixes
43
-
44
- - Fixed bug in the layer tree view. The layer tree is visible again.
45
-
46
- ## 1.0.1 - 23.07.2024
47
-
48
- ### Bugfixes
49
-
50
- - Fixed a bug in the campaign change event in the viewer.
51
-
52
- ## 1.0.0 - 17.05.2024
53
-
54
- ### Bugfixes
55
-
56
- - Restoration of toolbar and top bar functionality: They can now be shown and hidden smoothly.
57
-
58
- ### Added
59
-
60
- - Introduction of machine authentication and a new corresponding example.
61
- - Added: Option for access token in the init function.
62
- - Added: Refresh token for the init function.
63
- - Typings
64
-
65
- ### Changed
66
-
67
- - Examples have been updated to accommodate the new authentication process.
68
-
69
- ### Deleted
70
-
71
- - Interactive login functions.
72
- - Removed: Two options from the init function:
73
- - demoAccess
74
- - redirectPath
75
-
76
- ## 0.2.8 - 08.04.2024
77
-
78
- ### Added
79
-
80
- - Integrated and documented functions
81
- - moveToPosition
82
- - moveToCampaign
83
- - lookAtPosition
84
- - getRoutes
85
-
86
- ## 0.2.7 - 04.04.2024
87
-
88
- ### Added
89
-
90
- - Improved documentation
91
- - Description of the event types
92
- - Description of further settings
93
-
94
- ### Changed
95
-
96
- - Adaptation to the existing examples
97
-
98
- ## 0.2.4 - 14.03.2024
99
-
100
- ### Bugfixes
101
-
102
- - Troubleshooting with internal module
103
-
104
- ## 0.2.3 - 09.02.2024
105
-
106
- ### Added
107
-
108
- - Demo Access Login
109
- - Documenation
110
-
111
- ### Changed
112
-
113
- - Adoption of adjustments to the UI base of infra3D Edit
114
-
115
- ### Bugfixes
116
-
117
- - Various minor adjustments
118
-
119
- ## 0.2.0 - 30.01.2024
120
-
121
- ### Added
122
-
123
- - Edit functionality
40
+ ## 1.0.3 - 17.09.2024
41
+
42
+ ### Bugfixes
43
+
44
+ - Fixed pilegate URL for migrated users.
45
+ - Using the profiletool, added an information and reset the tool when changing the image while performing a measurement.
46
+ - Fix the bug when using jest for testing.
47
+ - Added missing bounding box parameter to viewer.getRoutes().
48
+
49
+ ## 1.0.2 - 06.08.2024
50
+
51
+ ### Bugfixes
52
+
53
+ - Fixed bug in the layer tree view. The layer tree is visible again.
54
+
55
+ ## 1.0.1 - 23.07.2024
56
+
57
+ ### Bugfixes
58
+
59
+ - Fixed a bug in the campaign change event in the viewer.
60
+
61
+ ## 1.0.0 - 17.05.2024
62
+
63
+ ### Bugfixes
64
+
65
+ - Restoration of toolbar and top bar functionality: They can now be shown and hidden smoothly.
66
+
67
+ ### Added
68
+
69
+ - Introduction of machine authentication and a new corresponding example.
70
+ - Added: Option for access token in the init function.
71
+ - Added: Refresh token for the init function.
72
+ - Typings
73
+
74
+ ### Changed
75
+
76
+ - Examples have been updated to accommodate the new authentication process.
77
+
78
+ ### Deleted
79
+
80
+ - Interactive login functions.
81
+ - Removed: Two options from the init function:
82
+ - demoAccess
83
+ - redirectPath
84
+
85
+ ## 0.2.8 - 08.04.2024
86
+
87
+ ### Added
88
+
89
+ - Integrated and documented functions
90
+ - moveToPosition
91
+ - moveToCampaign
92
+ - lookAtPosition
93
+ - getRoutes
94
+
95
+ ## 0.2.7 - 04.04.2024
96
+
97
+ ### Added
98
+
99
+ - Improved documentation
100
+ - Description of the event types
101
+ - Description of further settings
102
+
103
+ ### Changed
104
+
105
+ - Adaptation to the existing examples
106
+
107
+ ## 0.2.4 - 14.03.2024
108
+
109
+ ### Bugfixes
110
+
111
+ - Troubleshooting with internal module
112
+
113
+ ## 0.2.3 - 09.02.2024
114
+
115
+ ### Added
116
+
117
+ - Demo Access Login
118
+ - Documenation
119
+
120
+ ### Changed
121
+
122
+ - Adoption of adjustments to the UI base of infra3D Edit
123
+
124
+ ### Bugfixes
125
+
126
+ - Various minor adjustments
127
+
128
+ ## 0.2.0 - 30.01.2024
129
+
130
+ ### Added
131
+
132
+ - Edit functionality
124
133