|
|
|
import t from"d3-path";var n="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self?self:global;var i={};(function(n,e){e(i,t)})(i,(function(t,i){function constant(t){return function constant(){return t}}var e=Math.abs;var a=Math.atan2;var s=Math.cos;var o=Math.max;var r=Math.min;var l=Math.sin;var h=Math.sqrt;var c=1e-12;var _=Math.PI;var u=_/2;var f=2*_;function acos(t){return t>1?0:t<-1?_:Math.acos(t)}function asin(t){return t>=1?u:t<=-1?-u:Math.asin(t)}function arcInnerRadius(t){return t.innerRadius}function arcOuterRadius(t){return t.outerRadius}function arcStartAngle(t){return t.startAngle}function arcEndAngle(t){return t.endAngle}function arcPadAngle(t){return t&&t.padAngle}function intersect(t,n,i,e,a,s,o,r){var l=i-t,h=e-n,_=o-a,u=r-s,f=u*l-_*h;if(!(f*f<c)){f=(_*(n-s)-u*(t-a))/f;return[t+f*l,n+f*h]}}function cornerTangents(t,n,i,e,a,s,r){var l=t-i,c=n-e,_=(r?s:-s)/h(l*l+c*c),u=_*c,f=-_*l,p=t+u,d=n+f,v=i+u,m=e+f,k=(p+v)/2,g=(d+m)/2,b=v-p,T=m-d,R=b*b+T*T,C=a-s,w=p*m-v*d,M=(T<0?-1:1)*h(o(0,C*C*R-w*w)),S=(w*T-b*M)/R,N=(-w*b-T*M)/R,O=(w*T+b*M)/R,A=(-w*b+T*M)/R,E=S-k,P=N-g,$=O-k,B=A-g;E*E+P*P>$*$+B*B&&(S=O,N=A);return{cx:S,cy:N,x01:-u,y01:-f,x11:S*(a/C-1),y11:N*(a/C-1)}}function arc(){var t=arcInnerRadius,o=arcOuterRadius,p=constant(0),d=null,v=arcStartAngle,m=arcEndAngle,k=arcPadAngle,g=null;function arc(){var b,T,R=+t.apply(this||n,arguments),C=+o.apply(this||n,arguments),w=v.apply(this||n,arguments)-u,M=m.apply(this||n,arguments)-u,S=e(M-w),N=M>w;g||(g=b=i.path());C<R&&(T=C,C=R,R=T);if(C>c)if(S>f-c){g.moveTo(C*s(w),C*l(w));g.arc(0,0,C,w,M,!N);if(R>c){g.moveTo(R*s(M),R*l(M));g.arc(0,0,R,M,w,N)}}else{var O=w,A=M,E=w,P=M,$=S,B=S,q=k.apply(this||n,arguments)/2,z=q>c&&(d?+d.apply(this||n,arguments):h(R*R+C*C)),L=r(e(C-R)/2,+p.apply(this||n,arguments)),X=L,Y=L,V,I;if(z>c){var D=asin(z/R*l(q)),H=asin(z/C*l(q));($-=2*D)>c?(D*=N?1:-1,E+=D,P-=D):($=0,E=P=(w+M)/2);(B-=2*H)>c?(H*=N?1:-1,O+=H,A-=H):(B=0,O=A=(w+M)/2)}var W=C*s(O),j=C*l(O),F=R*s(P),G=R*l(P);if(L>c){var J=C*s(A),K=C*l(A),Q=R*s(E),U=R*l(E),Z;if(S<_&&(Z=intersect(W,j,Q,U,J,K,F,G))){var tt=W-Z[0],nt=j-Z[1],it=J-Z[0],et=K-Z[1],at=1/l(acos((tt*it+nt*et)/(h(tt*tt+nt*nt)*h(it*it+et*et)))/2),st=h(Z[0]*Z[0]+Z[1]*Z[1]);X=r(L,(R-st)/(at-1));Y=r(L,(C-st)/(at+1))}}if(B>c)if(Y>c){V=cornerTangents(Q,U,W,j,C,Y,N);I=cornerTangents(J,K,F,G,C,Y,N);g.moveTo(V.cx+V.x01,V.cy+V.y01);if(Y<L)g.arc(V.cx,V.cy,Y,a(V.y01,V.x01),a(I.y01,I.x01),!N);else{g.arc(V.cx,V.cy,Y,a(V.y01,V.x01),a(V.y11,V.x11),!N);g.arc(0,0,C,a(V.cy+V.y11,V.cx+V.x11),a(I.cy+I.y11,I.cx+I.x11),!N);g.arc(I.cx,I.cy,Y,a(I.y11,I.x11),a(I.y01,I.x01),!N)}}else g.moveTo(W,j),g.arc(0,0,C,O,A,!N);else g.moveTo(W,j);if(R>c&&$>c)if(X>c){V=cornerTangents(F,G,J,K,R,-X,N);I=cornerTangents(W,j,Q,U,R,-X,N);g.lineTo(V.cx+V.x01,V.cy+V.y01);if(X<L)g.arc(V.cx,V.cy,X,a(V.y01,V.x01),a(I.y01,I.x01),!N);else{g.arc(V.cx,V.cy,X,a(V.y01,V.x01),a(V.y11,V.x11),!N);g.arc(0,0,R,a(V.cy+V.y11,V.cx+V.x11),a(I.cy+I.y11,I.cx+I.x11),N);g.arc(I.cx,I.cy,X,a(I.y11,I.x11),a(I.y01,I.x01),!N)}}else g.arc(0,0,R,P,E,N);else g.lineTo(F,G)}else g.moveTo(0,0);g.closePath();if(b)return g=null,b+""||null}arc.centroid=function(){var i=(+t.apply(this||n,arguments)+ +o.apply(this||n,arguments))/2,e=(+v.apply(this||n,arguments)+ +m.apply(this||n,arguments))/2-_/2;return[s(e)*i,l(e)*i]};arc.innerRadius=function(n){return arguments.length?(t="function"===typeof n?n:constant(+n),arc):t};arc.outerRadius=function(t){return arguments.length?(o="function"===typeof t?t:constant(+t),arc):o};arc.cornerRadius=function(t){return arguments.length?(p="function"===typeof t?t:constant(+t),arc):p};arc.padRadius=function(t){return arguments.length?(d=null==t?null:"function"===typeof t?t:constant(+t),arc):d};arc.startAngle=function(t){return arguments.length?(v="function"===typeof t?t:constant(+t),arc):v};arc.endAngle=function(t){return arguments.length?(m="function"===typeof t?t:constant(+t),arc):m};arc.padAngle=function(t){return arguments.length?(k="function"===typeof t?t:constant(+t),arc):k};arc.context=function(t){return arguments.length?(g=null==t?null:t,arc):g};return arc}
|