2024-02-14 13:02:11 -05:00
|
|
|
import{quadtree as n}from"d3-quadtree";import{dispatch as t}from"d3-dispatch";import{timer as e}from"d3-timer";function center(n,t){var e,i=1;null==n&&(n=0);null==t&&(t=0);function force(){var r,o,f=e.length,c=0,a=0;for(r=0;r<f;++r)o=e[r],c+=o.x,a+=o.y;for(c=(c/f-n)*i,a=(a/f-t)*i,r=0;r<f;++r)o=e[r],o.x-=c,o.y-=a}force.initialize=function(n){e=n};force.x=function(t){return arguments.length?(n=+t,force):n};force.y=function(n){return arguments.length?(t=+n,force):t};force.strength=function(n){return arguments.length?(i=+n,force):i};return force}function constant(n){return function(){return n}}function jiggle(n){return 1e-6*(n()-.5)}function x$2(n){return n.x+n.vx}function y$2(n){return n.y+n.vy}function collide(t){var e,i,r,o=1,f=1;"function"!==typeof t&&(t=constant(null==t?1:+t));function force(){var t,c,a,u,l,s,g,h=e.length;for(var v=0;v<f;++v){c=n(e,x$2,y$2).visitAfter(prepare);for(t=0;t<h;++t){a=e[t];s=i[a.index],g=s*s;u=a.x+a.vx;l=a.y+a.vy;c.visit(apply)}}function apply(n,t,e,i,f){var c=n.data,h=n.r,v=s+h;if(!c)return t>u+v||i<u-v||e>l+v||f<l-v;if(c.index>a.index){var d=u-c.x-c.vx,p=l-c.y-c.vy,z=d*d+p*p;if(z<v*v){0===d&&(d=jiggle(r),z+=d*d);0===p&&(p=jiggle(r),z+=p*p);z=(v-(z=Math.sqrt(z)))/z*o;a.vx+=(d*=z)*(v=(h*=h)/(g+h));a.vy+=(p*=z)*v;c.vx-=d*(v=1-v);c.vy-=p*v}}}}function prepare(n){if(n.data)return n.r=i[n.data.index];for(var t=n.r=0;t<4;++t)n[t]&&n[t].r>n.r&&(n.r=n[t].r)}function initialize(){if(e){var n,r,o=e.length;i=new Array(o);for(n=0;n<o;++n)r=e[n],i[r.index]=+t(r,n,e)}}force.initialize=function(n,t){e=n;r=t;initialize()};force.iterations=function(n){return arguments.length?(f=+n,force):f};force.strength=function(n){return arguments.length?(o=+n,force):o};force.radius=function(n){return arguments.length?(t="function"===typeof n?n:constant(+n),initialize(),force):t};return force}function index(n){return n.index}function find(n,t){var e=n.get(t);if(!e)throw new Error("node not found: "+t);return e}function link(n){var t,e,i,r,o,f,c=index,a=defaultStrength,u=constant(30),l=1;null==n&&(n=[]);function defaultStrength(n){return 1/Math.min(r[n.source.index],r[n.target.index])}function force(i){for(var r=0,c=n.length;r<l;++r)for(var a,u,s,g,h,v,d,p=0;p<c;++p){a=n[p],u=a.source,s=a.target;g=s.x+s.vx-u.x-u.vx||jiggle(f);h=s.y+s.vy-u.y-u.vy||jiggle(f);v=Math.sqrt(g*g+h*h);v=(v-e[p])/v*i*t[p];g*=v,h*=v;s.vx-=g*(d=o[p]);s.vy-=h*d;u.vx+=g*(d=1-d);u.vy+=h*d}}function initialize(){if(i){var f,a,u=i.length,l=n.length,s=new Map(i.map(((n,t)=>[c(n,t,i),n])));for(f=0,r=new Array(u);f<l;++f){a=n[f],a.index=f;"object"!==typeof a.source&&(a.source=find(s,a.source));"object"!==typeof a.target&&(a.target=find(s,a.target));r[a.source.index]=(r[a.source.index]||0)+1;r[a.target.index]=(r[a.target.index]||0)+1}for(f=0,o=new Array(l);f<l;++f)a=n[f],o[f]=r[a.source.index]/(r[a.source.index]+r[a.target.index]);t=new Array(l),initializeStrength();e=new Array(l),initializeDistance()}}function initializeStrength(){if(i)for(var e=0,r=n.length;e<r;++e)t[e]=+a(n[e],e,n)}function initializeDistance(){if(i)for(var t=0,r=n.length;t<r;++t)e[t]=+u(n[t],t,n)}force.initialize=function(n,t){i=n;f=t;initialize()};force.links=function(t){return arguments.length?(n=t,initialize(),force):n};force.id=function(n){return arguments.length?(c=n,force):c};force.iterations=function(n){return arguments.length?(l=+n,force):l};force.strength=function(n){return arguments.length?(a="function"===typeof n?n:constant(+n),initializeStrength(),force):a};force.distance=function(n){return arguments.length?(u="function"===typeof n?n:constant(+n),initializeDistance(),force):u};return force}const i=1664525;const r=1013904223;const o=4294967296;function lcg(){let n=1;return()=>(n=(i*n+r)%o)/o}function x$1(n){return n.x}function y$1(n){return n.y}var f=10,c=Math.PI*(3-Math.sqrt(5));function simulation(n){var i,r=1,o=.001,a=1-Math.pow(o,1/300),u=0,l=.6,s=new Map,g=e(step),h=t("tick","end"),v=lcg();null==n&&(n=[]);function step(){tick();h.call("tick",i);if(r<o){g.stop();h.call("end",i)}}function tick(t){var e,o,f=n.length;void 0===t&&(t=1);for(var c=0;c<t;++c){r+=(u-r)*a;s.forEach
|