mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-19 21:29:38 +02:00
3 lines
33 KiB
JavaScript
3 lines
33 KiB
JavaScript
|
import{Path as t}from"d3-path";function constant(t){return function constant(){return t}}const n=Math.abs;const i=Math.atan2;const e=Math.cos;const s=Math.max;const o=Math.min;const a=Math.sin;const r=Math.sqrt;const h=1e-12;const l=Math.PI;const c=l/2;const _=2*l;function acos(t){return t>1?0:t<-1?l:Math.acos(t)}function asin(t){return t>=1?c:t<=-1?-c:Math.asin(t)}function withPath(n){let i=3;n.digits=function(t){if(!arguments.length)return i;if(null==t)i=null;else{const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);i=n}return n};return()=>new t(i)}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,s,o,a,r){var l=i-t,c=e-n,_=a-s,u=r-o,f=u*l-_*c;if(!(f*f<h)){f=(_*(n-o)-u*(t-s))/f;return[t+f*l,n+f*c]}}function cornerTangents(t,n,i,e,o,a,h){var l=t-i,c=n-e,_=(h?a:-a)/r(l*l+c*c),u=_*c,f=-_*l,p=t+u,d=n+f,v=i+u,m=e+f,T=(p+v)/2,b=(d+m)/2,g=v-p,k=m-d,w=g*g+k*k,R=o-a,C=p*m-v*d,S=(k<0?-1:1)*r(s(0,R*R*w-C*C)),N=(C*k-g*S)/w,E=(-C*g-k*S)/w,P=(C*k+g*S)/w,A=(-C*g+k*S)/w,M=N-T,O=E-b,$=P-T,B=A-b;M*M+O*O>$*$+B*B&&(N=P,E=A);return{cx:N,cy:E,x01:-u,y01:-f,x11:N*(o/R-1),y11:E*(o/R-1)}}function arc(){var t=arcInnerRadius,s=arcOuterRadius,u=constant(0),f=null,p=arcStartAngle,d=arcEndAngle,v=arcPadAngle,m=null,T=withPath(arc);function arc(){var b,g,k=+t.apply(this,arguments),w=+s.apply(this,arguments),R=p.apply(this,arguments)-c,C=d.apply(this,arguments)-c,S=n(C-R),N=C>R;m||(m=b=T());w<k&&(g=w,w=k,k=g);if(w>h)if(S>_-h){m.moveTo(w*e(R),w*a(R));m.arc(0,0,w,R,C,!N);if(k>h){m.moveTo(k*e(C),k*a(C));m.arc(0,0,k,C,R,N)}}else{var E,P,A=R,M=C,O=R,$=C,B=S,X=S,Y=v.apply(this,arguments)/2,z=Y>h&&(f?+f.apply(this,arguments):r(k*k+w*w)),L=o(n(w-k)/2,+u.apply(this,arguments)),I=L,q=L;if(z>h){var V=asin(z/k*a(Y)),D=asin(z/w*a(Y));(B-=2*V)>h?(V*=N?1:-1,O+=V,$-=V):(B=0,O=$=(R+C)/2);(X-=2*D)>h?(D*=N?1:-1,A+=D,M-=D):(X=0,A=M=(R+C)/2)}var j=w*e(A),H=w*a(A),W=k*e($),F=k*a($);if(L>h){var G,J=w*e(M),K=w*a(M),Q=k*e(O),U=k*a(O);if(S<l)if(G=intersect(j,H,Q,U,J,K,W,F)){var Z=j-G[0],tt=H-G[1],nt=J-G[0],it=K-G[1],et=1/a(acos((Z*nt+tt*it)/(r(Z*Z+tt*tt)*r(nt*nt+it*it)))/2),st=r(G[0]*G[0]+G[1]*G[1]);I=o(L,(k-st)/(et-1));q=o(L,(w-st)/(et+1))}else I=q=0}if(X>h)if(q>h){E=cornerTangents(Q,U,j,H,w,q,N);P=cornerTangents(J,K,W,F,w,q,N);m.moveTo(E.cx+E.x01,E.cy+E.y01);if(q<L)m.arc(E.cx,E.cy,q,i(E.y01,E.x01),i(P.y01,P.x01),!N);else{m.arc(E.cx,E.cy,q,i(E.y01,E.x01),i(E.y11,E.x11),!N);m.arc(0,0,w,i(E.cy+E.y11,E.cx+E.x11),i(P.cy+P.y11,P.cx+P.x11),!N);m.arc(P.cx,P.cy,q,i(P.y11,P.x11),i(P.y01,P.x01),!N)}}else m.moveTo(j,H),m.arc(0,0,w,A,M,!N);else m.moveTo(j,H);if(k>h&&B>h)if(I>h){E=cornerTangents(W,F,J,K,k,-I,N);P=cornerTangents(j,H,Q,U,k,-I,N);m.lineTo(E.cx+E.x01,E.cy+E.y01);if(I<L)m.arc(E.cx,E.cy,I,i(E.y01,E.x01),i(P.y01,P.x01),!N);else{m.arc(E.cx,E.cy,I,i(E.y01,E.x01),i(E.y11,E.x11),!N);m.arc(0,0,k,i(E.cy+E.y11,E.cx+E.x11),i(P.cy+P.y11,P.cx+P.x11),N);m.arc(P.cx,P.cy,I,i(P.y11,P.x11),i(P.y01,P.x01),!N)}}else m.arc(0,0,k,$,O,N);else m.lineTo(W,F)}else m.moveTo(0,0);m.closePath();if(b)return m=null,b+""||null}arc.centroid=function(){var n=(+t.apply(this,arguments)+ +s.apply(this,arguments))/2,i=(+p.apply(this,arguments)+ +d.apply(this,arguments))/2-l/2;return[e(i)*n,a(i)*n]};arc.innerRadius=function(n){return arguments.length?(t="function"===typeof n?n:constant(+n),arc):t};arc.outerRadius=function(t){return arguments.length?(s="function"===typeof t?t:constant(+t),arc):s};arc.cornerRadius=function(t){return arguments.length?(u="function"===typeof t?t:constant(+t),arc):u};arc.padRadius=function(t){return arguments.length?(f=null==t?null:"function"===typeof t?t:constant(+t),arc):f};arc.startAngle=function(t){return arguments.length?(p="function"===typeof t?t:constant(+t),arc):p};arc.endAngle=function(t){return arguments.length?(d="function"===typeof t?t:constant(+t),arc):d};arc.padAngle=function(t){return arguments.length?(v="function"===typeof t?t:constant(+t),ar
|
||
|
|