// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("exports ../../core/arrayUtils ../../core/ObjectStack ../../chunks/vec32 ../../core/libs/gl-matrix-2/factories/vec3f64 ./vectorStacks".split(" "),function(e,t,x,c,g,n){function h(a){if(a){var b=g.clone(a.origin);a=g.clone(a.direction);b={origin:b,direction:a}}else b=g.create(),a=g.create(),b={origin:b,direction:a};return b}function u(a,b,d=h()){c.copy(d.origin,a);c.copy(d.direction,b);return d}const y=new x.ObjectStack(()=>h()),p=g.create();e.closestPoint=function(a,b,d){b=c.dot(a.direction, c.subtract(d,b,a.origin));c.add(d,a.origin,c.scale(d,a.direction,b));return d};e.closestPoints=function(a,b,d,v){const k=a.direction,l=b.direction;var m=c.sub(p,b.origin,a.origin);const f=c.dot(k,l),w=c.dot(l,m);m=c.dot(k,m);const q=c.dot(k,k),r=c.dot(l,l),z=(f*m-w*q)/(q*r-f*f);c.add(d,a.origin,c.scale(p,k,(f*w+m*r)/(q*r-f*f)));c.add(v,b.origin,c.scale(p,l,z));return[d,v]};e.copy=function(a,b=h()){return u(a.origin,a.direction,b)};e.create=h;e.distance2=function(a,b){a=c.cross(n.sv3d.get(),c.normalize(n.sv3d.get(), a.direction),c.subtract(n.sv3d.get(),b,a.origin));return c.dot(a,a)};e.equals=function(a,b){return t.equals(a.origin,b.origin)&&t.equals(a.direction,b.direction)};e.fromPoints=function(a,b,d=h()){c.copy(d.origin,a);c.subtract(d.direction,b,a);return d};e.fromValues=u;e.wrap=function(a,b){const d=y.get();d.origin=a;d.direction=b;return d};Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});