@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.1 kB
JavaScript
import{createScreenPoint as t}from"../../../core/screenUtils.js";function e(t,e){return Math.abs(e.x-t.x)+Math.abs(e.y-t.y)}function n(t,e){const n=e.x-t.x,r=e.y-t.y;return Math.sqrt(n*n+r*r)}function r(e,n){if(n?(n.radius=0,n.center.x=0,n.center.y=0):n={radius:0,center:t()},0===e.length)return n;if(1===e.length)return n.center.x=e[0].x,n.center.y=e[0].y,n;if(2===e.length){const[t,r]=e,[c,o]=[r.x-t.x,r.y-t.y];return n.radius=Math.sqrt(c*c+o*o)/2,n.center.x=(t.x+r.x)/2,n.center.y=(t.y+r.y)/2,n}let r=0,c=0;for(let t=0;t<e.length;t++)r+=e[t].x,c+=e[t].y;r/=e.length,c/=e.length;const o=e.map((t=>t.x-r)),s=e.map((t=>t.y-c));let u=0,i=0,x=0,y=0,a=0,h=0,l=0;for(let t=0;t<o.length;t++){const e=o[t],n=s[t],r=e*e,c=n*n;u+=r,i+=c,x+=e*n,y+=r*e,a+=c*n,h+=e*c,l+=n*r}const f=.5*(y+h),g=.5*(a+l),p=u*i-x*x,d=(f*i-g*x)/p,m=(u*g-x*f)/p,M=t(d+r,m+c);return{radius:Math.sqrt(d*d+m*m+(u+i)/e.length),center:M}}function c(t){const{native:e}=t,{pointerId:n,button:r,pointerType:c}=e;return"mouse"===c?`${n}:${r}`:`${c}`}export{n as euclideanDistance,r as fitCircleLSQ,c as getPointerId,e as manhattanDistance};