@g20/euclid
Version:
Euclidean Geometry Utilities
3 lines (2 loc) • 799 B
JavaScript
import{G20 as e,dispose as s}from"@g20/core";const c=e.vector(0,0);function o(o,a){const r=e.zero.clone(),t=e.zero.clone(),n=[];let u=!1;const i=()=>{u&&function(s,o,a,r,t,n){if(-1!==t&&-1!==n){c.copyVector(r).sub(a);const u=c.quaditude(),i=n*n,d=t*t,l=Math.sqrt(u),b=(u-i+d)/(2*l),h=d-b*b;if(h>=0){const r=Math.sqrt(h),t=c.clone().scale(1/l),n=t.clone().mul(e.I),u=t.clone().scale(b),i=n.clone().scale(r);s.copyVector(a).add(u).add(i),o.copyVector(a).add(u).sub(i)}else s.set(NaN,NaN),o.set(NaN,NaN)}}(r,t,o.X,a.X,o.radius.a,a.radius.a)};n.push(o.X.change$.subscribe(i)),n.push(a.X.change$.subscribe(i)),n.push(o.radius.change$.subscribe(i)),n.push(a.radius.change$.subscribe(i)),u=!0,i();return[r,t,{dispose(){s(n)}}]}export{o as circle_circle_intersection};
//# sourceMappingURL=index.min.js.map