quoslibero
Version:
FusionCharts JavaScript charting framework
1 lines • 1.46 kB
JavaScript
export default function(a){var b=Math,c=b.pow,d=b.tan,e=b.acos,f=b.min,g=b.sqrt,h=a._cacher(function(a,b,d,e){return g(c(d-a,2)+c(e-b,2))}),i=a._cacher(function(a,b,c,e,f){var d,g,i,j=c-a,k=e-b;return d=h(a,b,c,e),j/=d,k/=d,g=a+j*f,i=b+k*f,{x:g,y:i}});a.define&&a.define([{name:'trianglepath',trianglepath:function(){var b=this,c=arguments,d=a._lastArgIfGroup(c),e=b.path(d);return e.attr('trianglepath',[c[0],c[1],c[2],c[3],c[4],c[5],c[6]||0,c[7]||0,c[8]||0])},fn:{sides:function(){var a=this._args;return[h(a[0],a[1],a[2],a[3]),h(a[2],a[3],a[4],a[5]),h(a[4],a[5],a[0],a[1])]},enclosedAngles:function(){var a=this._sides;return[e((c(a[0],2)+c(a[2],2)-c(a[1],2))/(2*a[0]*a[2])),e((c(a[0],2)+c(a[1],2)-c(a[2],2))/(2*a[0]*a[1])),e((c(a[2],2)+c(a[1],2)-c(a[0],2))/(2*a[2]*a[1]))]},semiperimeter:function(){var a=this._sides||this.sides();return(a[0]+a[1]+a[2])/2}},ca:{trianglepath:function(a,b,c,e,h,j,k,l,m){if(k||l||m){this._args=arguments,this._sides=this.sides();var n,o,p,q=this.enclosedAngles(),r=this.semiperimeter();p=g(r*(r-this._sides[0])*(r-this._sides[1])*(r-this._sides[2]))/r,n=[f(k,p)/d(q[0]/2),f(l,p)/d(q[1]/2),f(m,p)/d(q[2]/2)],o=[i(a,b,h,j,n[0]),i(a,b,c,e,n[0]),i(c,e,a,b,n[1]),i(c,e,h,j,n[1]),i(h,j,c,e,n[2]),i(h,j,a,b,n[2])],this.attr({path:['M',o[0].x,o[0].y,'Q',a,b,o[1].x,o[1].y,'L',o[2].x,o[2].y,'Q',c,e,o[3].x,o[3].y,'L',o[4].x,o[4].y,'Q',h,j,o[5].x,o[5].y,'L',o[0].x,o[0].y]})}else this.attr({path:['M',a,b,'L',c,e,h,j,'Z']})}}}])}