g2o-euclid
Version:
g2o Euclidean Geometry Utilities
3 lines (2 loc) • 852 B
JavaScript
import{variable as s,G20 as t,dispose as o}from"g2o";import{effect as e}from"g2o-reactive";class c{#s=[];points=[];#t=s(0);change$=this.#t.asObservable();constructor(s,o){const c=t.vector(0,0),i=t.vector(0,0),a=t.vector(0,0),r=t.vector(0,0),n=t.vector(0,0);let h=-1,p=-1;const l=()=>{if(-1!==h&&-1!==p){n.copyVector(r).sub(a);const s=n.quaditude(),o=p*p,e=h*h,l=Math.sqrt(s),d=(s-o+e)/(2*l),g=e-d*d;if(g>=0){const s=Math.sqrt(g),o=n.clone().scale(1/l),e=o.clone().mul(t.I),r=o.clone().scale(d),h=e.clone().scale(s);c.copyVector(a).add(r).add(h),i.copyVector(a).add(r).sub(h),this.points[0]=c,this.points[1]=i}else this.points.length=0}};this.#s.push(e((()=>{a.copyVector(s.X),r.copyVector(o.X),h=s.radius,p=o.radius,l(),this.#t.set(this.#t.get()+1)})))}dispose(){o(this.#s)}}export{c as CircleCircleIntersection};
//# sourceMappingURL=index.min.js.map