1 line
18 KiB
Java
1 line
18 KiB
Java
![]() |
!function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("d3-selection"),require("d3-transition")):"function"==typeof define&&define.amd?define(["exports","d3-selection","d3-transition"],r):r(t.venn={},t.d3,t.d3)}(this,function(t,r,n){"use strict";var e=1e-10;function a(t,r){var n,a=function(t){for(var r=[],n=0;n<t.length;++n)for(var e=n+1;e<t.length;++e)for(var a=o(t[n],t[e]),i=0;i<a.length;++i){var s=a[i];s.parentIndex=[n,e],r.push(s)}return r}(t),u=a.filter(function(r){return function(t,r){for(var n=0;n<r.length;++n)if(s(t,r[n])>r[n].radius+e)return!1;return!0}(r,t)}),l=0,h=0,x=[];if(u.length>1){var c=f(u);for(n=0;n<u.length;++n){var g=u[n];g.angle=Math.atan2(g.x-c.x,g.y-c.y)}u.sort(function(t,r){return r.angle-t.angle});var v=u[u.length-1];for(n=0;n<u.length;++n){var p=u[n];h+=(v.x+p.x)*(p.y-v.y);for(var d={x:(p.x+v.x)/2,y:(p.y+v.y)/2},y=null,m=0;m<p.parentIndex.length;++m)if(v.parentIndex.indexOf(p.parentIndex[m])>-1){var M=t[p.parentIndex[m]],z=Math.atan2(p.x-M.x,p.y-M.y),b=Math.atan2(v.x-M.x,v.y-M.y),w=b-z;w<0&&(w+=2*Math.PI);var I=b-w/2,R=s(d,{x:M.x+M.radius*Math.sin(I),y:M.y+M.radius*Math.cos(I)});R>2*M.radius&&(R=2*M.radius),(null===y||y.width>R)&&(y={circle:M,width:R,p1:p,p2:v})}null!==y&&(x.push(y),l+=i(y.circle.radius,y.width),v=p)}}else{var P=t[0];for(n=1;n<t.length;++n)t[n].radius<P.radius&&(P=t[n]);var A=!1;for(n=0;n<t.length;++n)if(s(t[n],P)>Math.abs(P.radius-t[n].radius)){A=!0;break}A?l=h=0:(l=P.radius*P.radius*Math.PI,x.push({circle:P,p1:{x:P.x,y:P.y+P.radius},p2:{x:P.x-e,y:P.y+P.radius},width:2*P.radius}))}return h/=2,r&&(r.area=l+h,r.arcArea=l,r.polygonArea=h,r.arcs=x,r.innerPoints=u,r.intersectionPoints=a),l+h}function i(t,r){return t*t*Math.acos(1-r/t)-(t-r)*Math.sqrt(r*(2*t-r))}function s(t,r){return Math.sqrt((t.x-r.x)*(t.x-r.x)+(t.y-r.y)*(t.y-r.y))}function u(t,r,n){if(n>=t+r)return 0;if(n<=Math.abs(t-r))return Math.PI*Math.min(t,r)*Math.min(t,r);var e=r-(n*n-t*t+r*r)/(2*n);return i(t,t-(n*n-r*r+t*t)/(2*n))+i(r,e)}function o(t,r){var n=s(t,r),e=t.radius,a=r.radius;if(n>=e+a||n<=Math.abs(e-a))return[];var i=(e*e-a*a+n*n)/(2*n),u=Math.sqrt(e*e-i*i),o=t.x+i*(r.x-t.x)/n,f=t.y+i*(r.y-t.y)/n,l=-(r.y-t.y)*(u/n),h=-(r.x-t.x)*(u/n);return[{x:o+l,y:f-h},{x:o-l,y:f+h}]}function f(t){for(var r={x:0,y:0},n=0;n<t.length;++n)r.x+=t[n].x,r.y+=t[n].y;return r.x/=t.length,r.y/=t.length,r}function l(t){for(var r=new Array(t),n=0;n<t;++n)r[n]=0;return r}function h(t,r){return l(t).map(function(){return l(r)})}function x(t,r){for(var n=0,e=0;e<t.length;++e)n+=t[e]*r[e];return n}function c(t){return Math.sqrt(x(t,t))}function g(t,r,n){for(var e=0;e<r.length;++e)t[e]=r[e]*n}function v(t,r,n,e,a){for(var i=0;i<t.length;++i)t[i]=r*n[i]+e*a[i]}function p(t,r,n){var e,a=(n=n||{}).maxIterations||200*r.length,i=n.nonZeroDelta||1.05,s=n.zeroDelta||.001,u=n.minErrorDelta||1e-6,o=n.minErrorDelta||1e-5,f=void 0!==n.rho?n.rho:1,l=void 0!==n.chi?n.chi:2,h=void 0!==n.psi?n.psi:-.5,x=void 0!==n.sigma?n.sigma:.5,c=r.length,g=new Array(c+1);g[0]=r,g[0].fx=t(r),g[0].id=0;for(var p=0;p<c;++p){var d=r.slice();d[p]=d[p]?d[p]*i:s,g[p+1]=d,g[p+1].fx=t(d),g[p+1].id=p+1}function y(t){for(var r=0;r<t.length;r++)g[c][r]=t[r];g[c].fx=t.fx}for(var m=function(t,r){return t.fx-r.fx},M=r.slice(),z=r.slice(),b=r.slice(),w=r.slice(),I=0;I<a;++I){if(g.sort(m),n.history){var R=g.map(function(t){var r=t.slice();return r.fx=t.fx,r.id=t.id,r});R.sort(function(t,r){return t.id-r.id}),n.history.push({x:g[0].slice(),fx:g[0].fx,simplex:R})}for(e=0,p=0;p<c;++p)e=Math.max(e,Math.abs(g[0][p]-g[1][p]));if(Math.abs(g[0].fx-g[c].fx)<u&&e<o)break;for(p=0;p<c;++p){M[p]=0;for(var P=0;P<c;++P)M[p]+=g[P][p];M[p]/=c}var A=g[c];if(v(z,1+f,M,-f,A),z.fx=t(z),z.fx<g[0].fx)v(w,1+l,M,-l,A),w.fx=t(w),w.fx<z.fx?y(w):y(z);else if(z.fx>=g[c-1].fx){var F=!1;if(z.fx>A.fx?(v(b,1+h,M,-h,A),b.fx=t(b),b.fx<A.fx?y(b):F=!0):(v(b,1-h*f,M,h*f,A),b.fx=t(b),b.fx<z.fx?y(b):F=!0),F){if(x>=1)break;for(p=1;p<g.length;++p)v(g[p],1-x,g[0],x,g[p]),g[p].fx=t(g[p])}}else y(z)}return g.sort(m),{fx:g[0].fx,x:g[0]}}function d(t,r,n,e,a,i,s){var u=n.fx,o=x(n.fxprime,r),f=u,l=
|