@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 1.26 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{set as t,determinant as n}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as r}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{DerivedCircle as c,interpolateCircle as i}from"./circleUtils.js";import{interpolateSegment as o,distance2 as s,wrapAtan2 as a}from"./mathUtils.js";const e=r();function m(r,c,i){const[o,a]=r,[m,l]=c,[u,f]=i;t(e,o,m,u,a,l,f,1,1,1);const h=n(e),M=4*h/(s(r,c)+s(c,i)+s(i,r));if(!isFinite(M)||Math.abs(M)<1e-8)return null;const p=o**2+a**2,b=m**2+l**2,j=u**2+f**2;t(e,p,b,j,a,l,f,1,1,1);const x=n(e);t(e,p,b,j,o,m,u,1,1,1);return[x/h*.5,n(e)/h*-.5]}function l(t,n){const[r,i]=n.c,s=m(t,i,r),e=null==s,l=s??o([],t,r,.5),[u,f]=t,[h,M]=i,[p,b]=r,[j,x]=l,d=u-j,g=f-x,I=Math.sqrt(d*d+g*g),P=a(f-x,u-j),U=a(M-x,h-j);let q=a(b-x,p-j);return(U-P)*(q-U)<0&&(q+=2*Math.sign(P-q)*Math.PI),new c(j,x,I,P,q,e)}function u(t,n,r){const c=i(t,r/2),o=i(t,r),s=i(t,(r+1)/2);return[{c:[o,c]},{c:[[...n.c[0]],s]}]}function f(t,n){const[r]=n.c,{cx:c,cy:i,thetaStart:o,thetaEnd:s,radius:a,isInvalid:e}=l(t,n);return{a:[r,[c,i],Math.abs(s-o)<Math.PI?1:0,o>s?1:0,e?o:0,a,e?0:1]}}export{l as deriveCircleFromCircularArc,u as splitCircularArc,f as toEllipticArc7};